Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
software:gitolite [2012/10/08 16:26] mhoffmann [Verwaltung Repos] |
software:gitolite [2012/10/11 10:23] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Installation Gitolite Versionsverwaltungsserver ====== | ||
- | Gitolite ist ein Versionsverwaltungsserver der auf GIT basiert und eine denkbar einfache Konfiguration besitzt. | ||
- | Da die komplette Konfiguration über ein eigenes GIT-Repository läuft benötigt man kein Webinterface und hat sogar eine Versionsverwaltete Konfiguration. | ||
- | |||
- | ===== Vorbereitungen ===== | ||
- | //Diese Anleitung bezieht sich auf Ubuntu 12.04 LTS. Ubuntu 10.04 hat Gitolite noch nicht in den Paketquellen! | ||
- | // | ||
- | Für die Installation von Gitolite braucht man folgendes: | ||
- | - Server mit konfiguriertem SSH-Zugang (am besten über den Standardport und mit PublicKey-Authentifizierung). | ||
- | - GIT-Client auf dem lokalen Rechner | ||
- | - Unter Linux einfach über den Paketmanager installieren | ||
- | - Bei MacOS über Portierungsprogramme wie "Homebrew" oder "Macports" installieren | ||
- | - Unter Windows am besten GIT mit GitBash installieren. | ||
- | - SSH PublicKey des eigenen Rechners im richtigen Format (Mit Putty-PublicKeys funktioniert das nicht) | ||
- | - Ein bisschen Ahnung wie GIT funktioniert. | ||
- | |||
- | Zunächst solltet ihr den PublicKey auf den Server ziehen und dort irgendwo im Homeverzeichnis ablegen, ein Eintrag in die Datei **/home/[USER]/.ssh/authorized_keys** reicht nicht! | ||
- | Wie ihr SSH-Keys erstellt hängt vom Client ab, meistens jedoch kann man die SSH-Keys über die Shell (Bei Linux und Mac) mit dem Befehl ''ssh-keygen'' erstellen. | ||
- | |||
- | ===== Gitolite Installation ===== | ||
- | Gitolite kann einfach mit dem Befehl | ||
- | <code> | ||
- | sudo apt-get install gitolite | ||
- | </code> | ||
- | installiert werden. | ||
- | Dabei werden noch einige Pakte benötigt, wie bspw. git-core etc., welche aber automatisch mitinstalliert werden. | ||
- | |||
- | ===== Grundkonfiguration ===== | ||
- | Die Konfiguration von Gitolite ist unter Ubuntu ebenfalls recht einfach. Bei der Installation wird Gitolite einige Warnmeldungen anzeigen, dass noch kein Admin-key eingetragen ist, das soll nun behoben werden. | ||
- | Eingerichtet wird Gitolite über den Paketmanager mit | ||
- | <code> | ||
- | sudo dpkg-reconfigure gitolite | ||
- | </code> | ||
- | Dann werdet ihr einige Dinge gefragt: | ||
- | - An welchem Ort die Gitrepositories liegen sollen. Hierbei solltet ihr einen ordentlichen Pfad wählen, wie bspw **/srv/gitolite**. Fall noch nicht vorhanden wird der Paketmanager diesen Pfad erstellen. | ||
- | - Wie soll der Nutzer heißen, mit dem auf die Repositories zugegriffen werden soll. Nehmt hier bitte keinen User, der produktiv genutzt wird, also kein Admin- oder Nutzerkonto. Am besten eignet sich **gitolite**, da dieser Nutzername auch bei jedem Clone eines Repositories genutzt werden muss | ||
- | - Den Speicherort des SSH-PublicKeys den man vorher hochgeladen hat. Bitte auf entsprechende Leserechte achten! | ||
- | |||
- | Nach diesem drei Punkten ist Gitolite in der Regeln konfiguriert und man kann nun Anfangen die Repository-konfiguration zu beginnen. | ||
- | |||
- | ===== Verwaltung von Nutzern und Repositories ===== | ||
- | ==== Checkout admin-repo ==== | ||
- | |||
- | Wie bereits erwähnt erfolgt die produktive Konfiguration über ein eigenes Repository. | ||
- | Dieses müsst ihr euch auf den Rechner klonen dessen SSH-Key ihr als admin-key eingetragen habt. | ||
- | Der Clone funktioniert über git mit dem Befehl: | ||
- | <code> | ||
- | git clone [Gitoliteuser]@adresse.des.servers:gitlolite-admin.git | ||
- | </code> | ||
- | |||
- | Die Authentifizierung erfolgt über den SSH-Schlüssel, das Repository wird geklont. | ||
- | Wird auf dem Server SSH nicht auf dem Standardport genutzt so muss der Clone-Befehl wie folgt lauten: | ||
- | <code> | ||
- | git clone ssh://[Gitoliteuser]@adresse.des.servers:[SSHPort]/gitolite-admin.git | ||
- | </code> | ||
- | |||
- | Das Admin-Repository hat zwei Verzeichnisse die für bestimmte Zwecke verwendet werden: | ||
- | * keydir: Hier werden alle SSH-keys abgelegt, die für die Zugangskontrolle gebraucht werden | ||
- | * config: Dieses Verzeichnis besitzt nur die Datei **gitolite.conf** die für die Verwaltung genutzt wird. | ||
- | ==== Verwaltung Nutzer ==== | ||
- | Die Zugangsverwaltung für gitolite erfolgt wie für GIT üblich mit SSH-keys. | ||
- | |||
- | Pro Nutzer können beliebig viele SSH-Schlüssel für verschiedene Computer eingetragen werden. | ||
- | Die SSH-PublicKeys der Nutzer werden im Verzeichnis "keydir" abgelegt. | ||
- | |||
- | Das Konzept ist denkbar einfach: Man nehme an, dass der Nutzer "**hans**" zwei keys hat, einen für den **Desktop**, einen für den **Laptop**. Die beiden Schlüssel werden dann im keydir als **hans@desktop** und **hans@laptop** abgelegt. | ||
- | ==== Verwaltung Repos ==== | ||
- | Hat man die Nutzer wie oben beschrieben angelegt kann man sich an die Konfiguration der repositories machen. | ||
- | |||
- | Die Struktur des Konfigurationsfiles ist denkbar einfach und wird am Beispiel erklärt: | ||
- | <code> | ||
- | #file gitolite.conf | ||
- | |||
- | @projects projekt1 projekt 2 #1 | ||
- | @developers hans juergen #2 | ||
- | |||
- | repo gitolite-admin #3 | ||
- | RW+ = admin #4 | ||
- | |||
- | repo testing #5 | ||
- | RW+ = @all #6 | ||
- | |||
- | repo hans_pub #7 | ||
- | RW+ = hans #8 | ||
- | R = juergen #9 | ||
- | |||
- | repo projects #10 | ||
- | RW+ = developers #11 | ||
- | </code> | ||
- | |||
- | Gitolite unterstützt Gruppen die entweder Nutzer oder Repositories zusammenfassen. Der Syntax ist der gleiche und erst bei der Nutzung in der Konfiguration zeigen sich die Unterschiede. | ||
- | |||
- | * Zeile 1 definiert eine Repository-Gruppe "projects" mit den Repositories "projekt1" und "projekt2" | ||
- | * Zeile 2 definiert eine Nutzer-Gruppe mit den Nutzern "hans" und "juergen" | ||
- | |||
- | Das Admin repository wird in den Zeilen #3 und #4 konfiguriert. Hier ist Vorsicht geboten, da man sich sonst schnell aussperrt! Zeile #5 und #6 definieren das von gitolite angelegt test-repo | ||
- | |||
- | Danach erfolgt die Definition der Repositories: | ||
- | * Zeile #7 - #9 definieren das repository "hans_pub" in dem hans lesen und schreiben darf, juergen aber nur lesen darf. | ||
- | * Zeile #10 - #11 definieren die Repositorygruppe "projects". Hierbei hat die Gruppe "developers" vollen Zugriff. | ||
- | |||
- | Die drei unterschiedlichen Lese- und Schreibrechte sind: | ||
- | - **R**: Nutzer darf nur lesen | ||
- | - **RW**: Nutzer darf lesen und schreiben | ||
- | - **RW+*: Nutzer darf lesen und schreiben und den Befehl ''git push -f** nutzen. | ||
- | |||
- | |||
- | |||
- | |||
- | ==== Upload Config ==== | ||
- | |||
- | {{tag>git versionsverwaltung}} | ||
- | |||
- | |||
- | |||
Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.