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.
Dann geht es auf dem Server weiter, das Verwaltungsrepository (gitolite-admin) zu erstellen.
scp ~/.ssh/id_rsa.pub $NAME@$SERVER:/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.
# Zum User wechseln
su - git
# setup ausführen
gl-setup /tmp/$NAME.pub
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 clone git@$SERVER:gitolite-admin
cd gitolite-admin
Nun noch ein Repository und eine Gruppe in der Konfigurationsdatei conf/gitolite.conf anlegen.
git add keydir/$user2.pub
git commit keydir/$user2.pub -m "Added new User"
Das ganze dann committen und auf den Server laden.
################## 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 war es schon, wir können das Repository jetzt benutzen.
git commit -a -m "New User and Group"
git push
Oder um ein bestehendes Git-Repository auf den Server zu packen einfach die url in .git/config ändern und git clone git@$SERVER:gitrepo1.git
ausführen.git push origin master
Die letzten Einträge
- HTML UTF-8 Kodierung Mo 5.08.13 17:51
- Syntax highlighting mit BeautifulSoup4 Di 2.07.13 17:04
- Git Repositorys verwalten mit Gitolite Do 15.03.12 17:56
- Website verfügbarkeit mit Nagios Sa 21.01.12 17:40
- Checkbox für ManyToManyField in Django Fr 14.10.11 15:57