Git Repo auf WebDAV (1&1)

Thu, 30. Oct 2008

Categories: de development Tags: git htaccess WebDAV

Eigene Git Repositories gehen auch mit billigem Shared Hosting recht bequem, falls der Hoster WebDAV anbietet. Z.B. bei 1&1 ist WebDAV auf Port 81 aktiviert.

Und so geht’s:

WebDAV Zugriff

Hier führen viele Wege nach Rom – ich wähle den via davfs2. Letztlich müssen wir nur in der Lage sein, ein Verzeichnis auf dem WebDAV Server anzulegen. Natürlich geht das auch per FTP, aber wenn wir schon WebDAV haben, benutzen wir’s auch gleich dafür.

  1. Eintrag in /etc/fstab:

    $ echo “http://www.myserver.example:81/ /home/localusername/mnt/myserver davfs noauto,user,nolocks 0 0” >> /etc/fstab
    

  2. WebDAV Zugangsdaten für davfs2:

    $ mkdir -p ~/.davfs2
    $ echo “http://www.myserver.example:81/ MyDavUser MyDavPwd” >> ~/.davfs2/secrets
    $ chmod 600 ~/.davfs2/secrets
    

  3. mounten:

    $ mount /home/localusername/mnt/myserver
    

  4. das leere Verzeichnis anlegen:

    $ mkdir /home/localusername/mnt/myserver/myproject.git
    

Ein (remote) Git Repo anlegen

Siehe dazu auch Shared Git Repository per Webdav.

  1. ein leeres Verzeichnis myproject.git auf dem WebDAV Server anlegen,
  2. lokal ein leeres Git Repo anlegen:

    $ mkdir myproject.git
    $ cd myproject.git
    $ git init –bare
    

  3. ggf. ein bestehendes Git Repo „importieren“:

    $ git pull UrlOfExistingRepo
    

  4. WebDAV Zugangsdaten für git hinterlegen:

    $ echo “machine myserver.example login MyDavUser password MyDavPwd” >> ~/.netrc
    $ chmod 600 ~/.netrc
    

  5. und das neue Repo hochladen:

    $ git push –all –force http://myserver.example:81/myproject.git
    

Nicht-WebDAV Zugriffe verhindern

Soll der Zugriff auf das Repo exklusiv nur per WebDAV erlaubt sein, empfiehlt es sich das Verzeichnis myproject.git auf dem Webserver zu sperren bzw. nur einen Benutzer zu erlauben, der ansonsten nicht benutzt wird.

Das geht über die Management Console des Webhosters oder indem man die entsprechende .htaccess Datei selbst erstellt und im Verzeichnis myproject.git ablegt.