Git Repositorys verwalten mit Gitolite

Ich habe ja lange Zeit mit Gitosis gearbeitet, da das Projekt aber wohl nicht weitergeführt wird, habe ich mich nach Alternativen umgeschaut und Gitolite gefunden. Welches ähnlich wie Gitosis funktioniert. Die Verwaltung der Zugriffsrechte und das anlegen neuer Projekte wird über ein Git-Repository gesteuert, die Verbindung ist über Ssh verschlüsselt und die Authentifikation erfolgt über Zertifikate. Für die Installation auf (open)SUSE ist ein RPM verfügbar, welches nur git-daemon und perl als Abhängigkeiten hat. Der User "git" wird bei der Installation schon erstellt mit dem Homeverzeichnis /srv/git/.

Nun brauchen wir unseren Ssh-Key auf dem Server.

scp ~/.ssh/id_rsa.pub $NAME@$SERVER:/tmp/$NAME.pub
Dann geht es auf dem Server weiter, das Verwaltungsrepository (gitolite-admin) zu erstellen.
# Zum User wechseln
su - git
# setup ausführen
gl-setup /tmp/$NAME.pub
Damit sind wir dann schon mit der Einrichtung von Gitolite auf dem Server fertig und es geht auf dem Client damit weiter einen User anzulegen und ein Git-Repo zu importieren.
git clone git@$SERVER:gitolite-admin
cd gitolite-admin
Um einen neuen User anzulegen kopieren wir seinen Ssh-PublicKey nach keydir/$user2.pubwo schon der andere key zu finden ist und checken die Änderung ein.
git add keydir/$user2.pub
git commit keydir/$user2.pub -m "Added new User"
Nun noch ein Repository und eine Gruppe in der Konfigurationsdatei conf/gitolite.conf anlegen.
################## Rechtedefinition ############
# R     nur lesen 
# RW    für "push" existierende ref oder neue ref erstellen  
# RW+   für "push -f" oder löschen von ref 
# -     (minus) um Zugriff zu verbieten 
##########################################

# Gruppe mit 2 Benutzer
@group1 = user1 user2

# Repositorys
repo    gitolite-admin
        RW+     =   user1

repo    gitrepo1
        RW+     =   @group1
        R          =   @all         # Alle Benutzer
Das ganze dann committen und auf den Server laden.
git commit -a -m "New User and Group"
git push
Das war es schon, wir können das Repository jetzt benutzen.
git clone git@$SERVER:gitrepo1.git
Oder um ein bestehendes Git-Repository auf den Server zu packen einfach die url in .git/config ändern und
git push origin master
ausführen.

Tags:

Die letzten Einträge