Installation eines Git-Hosts
Posted on 24. Jan, 2010 by Markus Schabel in Informatik
Nachdem ich derzeit ohnehin keinen vernünftigen privaten Software-Development Server habe, und es dann doch schön langsam an der Zeit ist, die diversen Projekte wieder mal unter eine Versionskontrolle zu stellen (TimeMachine Backups sind zwar durchaus sicher, einfach und zuverlässig, aber eben nur Backups), habe ich beschlossen diesmal auf git zu setzen – nachdem ich ja in den Jahren zuvor meistens mit CVS bzw. vereinzelt mit SVN gefahren bin, wollte ich mal was neues probieren…
Um Git Repositories vernünftig hosten zu können gibt es das Tool gitosis, welches bereits als Debian-Paket verfügbar und somit leicht zu installieren ist:
Im Anschluss muss man gitosis mit einem SSH public key initialisieren, damit man sich ohne Passwort mit dem gitosis Repository (welches zur Konfiguration verwendet wird) verbinden kann. Eine entsprechenden Schlüssel kann man mit ssh-keygen erzeugen:
Diesen Schlüssel muss man jetzt für gitosis aktivieren:
gitosis verfügt über ein eigenes Konfigurations-Repository über das es konfiguriert werden kann. Dieses lässt sich wie folgt auschecken:
Dieser Befehl checkt das Repository aus und speichert es im aktuellen Pfad im Verzeichnis gitosis-admin. In diesem befindet sich einerseits eine Konfigurationsdatei gitosis.conf, sowie zusätzlich ein Verzeichnis keydir, in dem die SSH public keys der Benutzer gespeichert werden.
In der Konfigurationsdatei gitosis.conf gibt es Blöcke für Benutzergruppen und Repositories. Ich lege daher einfach einmal eine Gruppe für Entwickler an (wo allerdings momentan nur ich Mitglied bin). Außerdem sage ich, dass diese Gruppe mit dem Repository diplomarbeit (vielleicht sollte ich mehr Leute in diese Gruppe schreiben, vielleicht findet sich ja ein Depp der mir die Arbeit abnimmt) arbeiten darf.
members = markus
writable = diplomarbeit
Die geänderte Konfiguration kann mittels der folgenden Befehle aktiviert werden:
$git push
Der erste Befehl speichert dabei die Änderungen in der lokalen Kopie des Repositorys, während mit git push die Änderungen auf das Remote-Repository übertragen werden.
Die Diplomarbeit lässt sich jetzt in das Repository einchecken (dazu muss zuerst in das entsprechende Verzeichnis gewechselt werden):
$git remote add origin gitosis@SERVER:diplomarbeit.git
Mit git init wird dabei ein lokales git Repository angelegt (d.h. das Verzeichnis .git wird erstellt), mit git remote add wird ein neues Ziel origin angelegt, welches der angegebenen URL entspricht). Anschließend können die lokalen Dateien für die Versionskontrolle aktiviert werden (git add teilt git mit, das diese Dateien ab sofort unter Versionskontrolle sein sollen):
Die Änderungen (d.h. das Hinzufügen der Dateien) muss nun noch bestätigt werden, wobei hier zusätzlich ein entsprechender Kommentar angegeben werden sollte, der die Änderungen beschreibt:
Das Repository muss nun auch auf den Server gepusht werden. Hierbei werden die Änderungen an das Ziel origin (welches zuvor mit git remote add konfiguriert wurde) übertragen. Diese werden dabei in die lokale Branch master als remote Branch heads/master gespeichert werden soll:
Die Repositories werden auf dem Server dabei im Verzeichnis /srv/gitosis/repositories/ gespeichert, welches natürlich entsprechend in die Backups aufgenommen werden sollte.






