Quantcast
Channel: Matthias Lohr's technical stuff » WebDAV
Viewing all articles
Browse latest Browse all 2

Eigener Git-Repo-Server

$
0
0

Nachdem ich nun von vielen Seiten immer wieder den Satz höre “Git ist toll” habe ich mich mal damit auseinandergesetzt, um die Euphorie und die leuchtenden Augen der Entwickler. die mit Git arbeiten, zu verstehen. Nachdem die übliche “Was ist es, wie benutzt man es”-Phase vorüber war und langsam Licht in das Dunkel kam, konnte ich immer mehr die oben beschriebenen Rekaktionen der Git-Nutzer verstehen: Git ist wirklich toll!

Viele Leute heutzutage kennen SVN und finden die Möglichkeiten, die es bieten, recht nett – allerdings ist SVN vergleichsweise langsam (besonders für große Projekte) und benötigt einen zentralen Server bzw. ein zentrales Repository. Der erste einleuchtende Grund für mich, zu Git zu wechseln, war die Feststellung, dass Git sämtliche in SVN enthaltenden Funktionen selbst beherrscht, allerdings wesentlich schneller und das absolut dezentral. Allerdings kenne und beherrsche ich selbst noch lange nicht alle Funktionen von Git, daher überlasse ich die Vorstellung davon anderen.

Um mich selbst ein wenig in Git einarbeiten zu können bestand mein erster Versuch darin, einen eigenen Git-Server aufzusetzen, um meine (Test-)Repositories selbst hosten zu können. Für alle, die dies ebenfalls versuchen möchte, beschreibe ich hier die Schritte, die notwendig waren, um den Server einrichten zu können.

Für mich war es wichtig, sowohl Lese-/Schreibzugriff per HTTP zu haben als auch einen webbasierten Browser, um sich die Inhalte per Browser ansehen zu können. Als WebGUI verwende ich GitPHP (http://www.xiphux.com/programming/php/gitphp/). Dazu habe ich das verlinkte Paket heruntergeladen, es in /var/www/git/ entpackt und meine Domain git.ml.vg in der Apache-Konfiguration auf dieses Verzeichnis eingestellt (Config-Datei befindet sich weiter unten). Dadrin habe ich dann das Unterverzeichnis projects/ erstellt, in dem nachher meine Git-Projekte liegen werden. Einen laufenden Apache-Server mit installiertem WebDAV setze ich an dieser Stelle einfach mal voraus, ebenso sollte man sich durch die Config von GitPHP durchlesen, um diese je nach Situation anzupassen.

Mit folgender Apache-Konfiguration habe ich meinen Apache dazu überredet, WebDAV-Server zu spielen:

<VirtualHost 12.34.56.789:80>
ServerName git.ml.vg
ServerAdmin mail@…net

DocumentRoot /var/www/git

<LocationMatch “/projects/([a-zA-Z0-9\-]+).git”>
DAV on
</LocationMatch>

<Directory /var/www/git/projects/>
AllowOverride AuthConfig
Options FollowSymLinks SymLinksIfOwnerMatch Indexes
</Directory>

</VirtualHost>

Nun kann man (als Benutzer www-data, damit Apache Lese- und Schreibzugriff darauf hat) unter /var/www/git/projects pro gewünschtem Repository ein Verzeichnis erstellen und dieses mit git –bare init initialisieren. GitPHP sollte es sofort als vorhanden Anzeigen. Um die Schreibrechte zu limitieren, ist es sinnvoll, per Basic Auth einen Passwort-Schutz einzurichten, dazu lege ich pro Repository im entsprechenden Verzeichnis eine .htaccess-Datei ab (diesmal als Root, damit sie nicht per WebDAV überschrieben werden kann):

AuthType Basic
AuthName “My repo with git”
AuthUserFile /var/www/git/projects/test.git/.htpasswd
<Limitexcept GET HEAD PROPFIND OPTIONS REPORT>
Require valid-user
</Limitexcept>

Diese Konfiguration sorgt dafür, dass jeder lesen, aber nur authentifizierte Benutzer in das Repository schreiben können.

Apache neustarten, ggf. Fehlermeldungen totschlagen, dann sollte der Git-Server funktionieren :). Bei Fragen und/oder Problemen meldet euch per Kommentar.


Viewing all articles
Browse latest Browse all 2