Zurück zur Übersicht

Git-FTP

Ich habe zuletzt an einigen Projekten gearbeitet, für die ich auch ein Git-Repository eingerichtet hatte. Der Workflow sah dann üblicherweise so aus:

  1. Änderungen zum Repository hinzufügen (push)
  2. Geänderte Dateien aus dem Arbeitsverzeichnis herausklauben und per FTP auf den Entwicklungsserver laden
  3. Schauen, ob alles auf dem Server angekommen ist – vielleicht hat man ja eine Datei übersehen

Dies wurde zunehmend umständlich, und wenn man nicht nach jeder Änderung das gesamte Projekt abgleichen will, dann nimmt das Herausfiltern der geänderten Dateien zu viel Zeit in Anspruch. Noch umständlicher wird es beim Löschen von lokalen Dateien. Diese verbleiben oft als Dateileichen auf dem Server, bis sich jemand erbarmt und die dortigen Ordner aufräumt.

Synchronisations-Werkzeuge wie jenes von Netbeans, welches lokale und entfernte Dateien abgleicht, basieren auf FTP und besitzen somit keine wirkliche Versionskontrolle.

Eine mögliche Lösung wäre das Einrichten von Push-to-Deploy. Dabei wird bei jedem Commit eine Aktion im entfernten Git-Repo ausgelöst, welche die Änderungen ebenfalls auf einem Serververzeichnis ablegt. Ich habe ein paarmal in einer solchen Umgebung gearbeitet (z.B. mit wpengine.org) und wusste die Vorteile bald zu schätzen. Um Push-to-Deploy selber einrichten zu können, benötigt man allerdings ssh-Zugriff auf den Server, welcher bei meinem miesen kleinen Webhosting-Paket natürlich nicht inbegriffen ist.

Die „preiswerte“ Alternative ist: git-ftp!

Hierbei handelt es sich um ein Skript, welches die Änderungen am lokalen Git-Repository überwacht, so dass man diese mittels eines einfachen Befehls auf den Server „pushen“ kann. Mit anderen Worten: das mühsame Herausfiltern von geänderten Dateien entfällt, der Server wird nur mit den Daten aus den letzten commits gefüttert – so wie beim herkömmlichen Push-to-Depoly also.

Installation

Mit folgenden Befehlen installiert man git-ftp (Linux/Unix-Systeme):

Weitere Installationsmöglichkeiten: https://github.com/git-ftp/git-ftp/blob/develop/INSTALL.md

Einrichten

Nach der Installation richtet man den FTP-Zugang ein:

Anwendung

Um zu Beginn das lokale Repository mit dem Server abzugleichen, genügt ein

Anschließend kann man nach jedem git commit die aktuellen Änderungen hochladen:

Dies genügt bereits für den herkömmlichen Arbeitsfluss.
Eine weitere sehr nützliche Möglichkeit sind die sog. „Scopes“. Damit könnt ihr verschiedene FTP-Verzeichnisse einrichten, zum Beispiel um die Änderungen schnell auf einen Entwicklungs- und einen Produktivserver zu laden.

Scopes

Hier ein Beispiel, um einen Scope „Production“ einzurichten:

Der s – Parameter wird verwenden, um den Scope zu wählen:

Weitere Befehle und Optionen findet ihr in der offiziellen Anleitung:

https://github.com/git-ftp/git-ftp/blob/develop/man/git-ftp.1.md

Ich hoffe, das diese kurze Einführung dem einen oder anderen hilft, seinen Arbeitsablauf zu optimieren. Schreibt mir einen Kommentar, was ihr davon haltet oder wenn ihr git-ftp bereits benutzt!

Schreibe einen Kommentar