Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:gitolite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:gitolite [2012/07/15 14:08]
mhoffmann
software:gitolite [2012/10/11 10:23] (aktuell)
Zeile 1: Zeile 1:
-====== Gitolite Versionsverwaltungsserver ​mit GIT ======+====== ​Installation ​Gitolite Versionsverwaltungsserver ======
 Gitolite ist ein Versionsverwaltungsserver der auf GIT basiert und eine denkbar einfache Konfiguration besitzt. 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. Da die komplette Konfiguration über ein eigenes GIT-Repository läuft benötigt man kein Webinterface und hat sogar eine Versionsverwaltete Konfiguration.
  
 ===== Vorbereitungen ===== ===== 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: Für die Installation von Gitolite braucht man folgendes:
-  - Server mit konfiguriertem SSH-Zugang (am besten über den Standardport und mit PublicKey-Authentifizierung). +  - Server mit konfiguriertem ​[[software:​ssh|SSH]]-Zugang (am besten über den Standardport und mit PublicKey-Authentifizierung). 
-  - GIT-Client auf dem lokalen Rechner+  - [[software:​git|GIT-Client]] auf dem lokalen Rechner
     - Unter Linux einfach über den Paketmanager installieren     - Unter Linux einfach über den Paketmanager installieren
     - Bei MacOS über Portierungsprogramme wie "​Homebrew"​ oder "​Macports"​ installieren     - Bei MacOS über Portierungsprogramme wie "​Homebrew"​ oder "​Macports"​ installieren
-    - Unter Windows am besten GIT mit GitBash installieren.+    - Unter Windows am besten ​[[http://​msysgit.github.com/​|GIT mit GitBash]] installieren.
   - SSH PublicKey des eigenen Rechners im richtigen Format (Mit Putty-PublicKeys funktioniert das nicht)   - SSH PublicKey des eigenen Rechners im richtigen Format (Mit Putty-PublicKeys funktioniert das nicht)
   - Ein bisschen Ahnung wie GIT funktioniert.   - Ein bisschen Ahnung wie GIT funktioniert.
Zeile 15: Zeile 17:
 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! 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. 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 =====
-===== Installation =====+
 Gitolite kann einfach mit dem Befehl ​ Gitolite kann einfach mit dem Befehl ​
 <​code>​ <​code>​
-sudo apt-get install gitolite''​+sudo apt-get install gitolite
 </​code>​ </​code>​
 installiert werden. installiert werden.
 Dabei werden noch einige Pakte benötigt, wie bspw. git-core etc., welche aber automatisch mitinstalliert 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. ​
 +
 +**Achtung:​** Der key **admin** darf unter keinen Umständen gelöscht werden! Der Nutzer, der das gitolite-admin Repository verwaltet muss immer als **admin** in den anderen Repositories eingetragen werden. Ein zusätzliche Upload des gleichen Schlüssels unter anderem Namen ist nicht möglich und führt zu Fehlern!
 +==== 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 ====
 +Hat man die Konfiguration angepasst und abgespeichert muss man sie committen und pushen:
 +
 +  - Mit ''​git status''​ pruefen ob alle keys vorhanden sind und die config geändert wurde. Hier sollte man auch prüfen ob nicht eventuell das Dateisystem unbeobachtet Dateien angelegt hat (bspw. Indexdateien),​ die man ignorieren sollte.
 +  - Mit ''​git add .''​ all Änderungen in den Index übernehmen
 +  - Mit ''​git commit -m [Nachricht]''​ die Änderungen versionieren
 +  - Mit ''​git push''​ die Änderungen auf den Server pushen
 +
 +Alle Änderungen werden sofort von Gitolite übernommen,​ neue Repositories und User werden angelegt.
 +
 +Neue Repositories kann man dann mit entsprechenden Nutzerrechten mit einem der beiden folgenden Befehle klonen:
 +<​code>​
 +git clone [Gitoliteuser]@adresse.des.servers:​[NameDesRepos].git ​ #für SSH auf Port 22
 +
 +git clone ssh://​[Gitoliteuser]@adresse.des.servers:​[SSHPort]/​[NameDesrepos].git ​ #SSH auf anderem Port
 +</​code>​
 +==== Löschen von Repositories ====
 +
 +Löscht man ein Repository oder einen Nutzer werden diese zwar gesperrt, verbleiben aber physikalisch auf dem Server! Dazu muss man im Verzeichnis der Gitolite Repositories manuell das Repository löschen.
 +
 +{{tag>​git versionsverwaltung}}
  
  
  
  

Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.

software/gitolite.1342354088.txt.gz · Zuletzt geändert: 2012/10/11 10:23 (Externe Bearbeitung)