Git mit normalem Webspace nutzen

Bei der Entwicklung von Software setzt man gerne Versionsverwaltungen ein. Man hat so die Möglichkeit, auf einen alten (und damit unter Umständen noch funktionierenden) Stand einer Datei zurückzuspringen. Vorallem lässt sich  mittels einer Versionsverwaltung Softwareentwicklung im Team realisieren, was sonst ein sehr nervenaufreibender Prozess wäre.

Normalerweise benötigt man dazu einen Server mit Shell-Zugang über ssh. Eine kostengünstige Möglichkeit, ein git-Repository zu nutzen ohne einen eigenen Server betreiben zu müssen oder auf spezielle Repository-Hosting-Dienste (z.B. github) zurückzugreifen werde ich im Folgenden beschreiben.

Wichtig dabei: Der Hosting-Anbieter muss git trotzdem auf seinen Servern installiert haben!

Meinen Webspace habe ich bei der Firma domainFACTORY
(http://www.df.eu/)angemietet. In meinem Tarif steht kein ssh-Zugang zur Verfügung. Allerdings kann ich per sftp auf meinen Webspace zugreifen und es steht php und git zur Verfügung.

Unter Ubuntu wurde ein über GNOME (Places -> Connect to server…) eingebundenes sftp-Verzeichnis automatisch nach /home/user/.gvfs/… gemountet. Unter Debian – was ich momentan nutze – scheint dies nicht der Fall zu sein.

Unter http://blog.flameeyes.eu/2007/02/how-to-use-git-via-sftp-only habe ich den entscheidenden Hinweis gefunden, wie ich das Verzeichnis in den normalen Verzeichnisbaum einbinden konnte.

Hier das Vorgehen, ein leeres git-Repository auf dem Webspace zu erstellen und zum pullen und pushen zu  nutzen:

  1. Verzeichnis in einem einer Domain zugeordneten Verzeichnis erstellen. Dieses Verzeichnis ist dann z.B. unter http://www.xy.de/git erreichbar.
  2. In diesem Verzeichnis eine .php-Datei mit folgendem Inhalt anlegen:
    <?php
        system("git init --bare");
    ?>
  3. Diese Datei mit dem Browser aufrufen – z.B. http://www.xy.de/git/init.php . Wenn eine Meldung angezeigt wird, dass das Erstellen eines leeren Repository erfolgreich war dieses Verzeichnis samt seiner Unterverzeichnisse an einen Ort auf dem Webspace verschieben, der möglichst nicht über eine Domain erreicht werden kann. Man will ja schließlich nicht, dass seine Daten für jedermann einsehbar sind. Die erstellte php-Datei kann jetzt gelöscht werden.
  4. Nun das Verzeichnis mit sshfs mounten:
    sshfs user@host:path/to/git /mnt
  5. Nun kann dem lokalen git-Repository das Verzeichnis als neues origin zugewiesen werden. Das –track master  wird benötigt, wenn ein bereits lokal existierendes Repository in ein leeres entferntes Repository gepusht wird. Dabei entferne ich zuerst eventuell vorhandene alte Origins:
    git remote rm origin
    git remote add --track master origin file:///mnt/
  6. Als nächstes in das neue Repository pushen – also den aktuellen Stand des lokalen Repository auf den Server schieben:
    git push origin HEAD
  7. Fertig!

(Weitere Quellen: http://stackoverflow.com/questions/7630574/git-push-everything-to-new-origin und http://splitshade.wordpress.com/2010/01/18/remote-repositories-mit-git-einrichten/)

Ein Gedanke zu „Git mit normalem Webspace nutzen

  1. Hi Stefan,
    coole Idee. Soweit ich sehe funktioniert das auch. Kann man ein solches Repository auch zu mehreren nutzen? Wenn man das Repository wie beschrieben anlegt, dann verwendet man es ja wie ein lokales Repository, nur mit dem Unterschied, dass es nicht auf der lokalen Festplatte, sondern auf einer Art NEtzlaufwerk gespeichert wird. Ist das gleichwertig mit einem Repository auf GitHub?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.