Gitolite installieren

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Gitolite ist eine Art Server für Git Repositories ohne dass ein Server (mit eigenem Daemon und Port etc.) installiert sein muss. Es macht in einem Webpaket gehostete Repos über SSH zugänglich. Ist gut für eine Handvoll Repos und ein paar User, wird gesteuert über ein Configfile und Public-Keys die alle zusammen über Git versioniert sind.

Gitolite einzurichten ist sehr einfach (wenn man rausbekommen hat wie es funktioniert).

Du brauchst ein SSH-Keypair ('admin'), das den später Gitolite-Admin Zugang ermöglicht. Dessen Publickey kopiest du in das homedir deines HS-Users.

Per SSH da eingeloggt, schreibst du:

 gitolite setup -pk admin.pub

Damit ist Gitolite in dem Webpaket installiert. Es hat die Konfigurationsdatei '.gitolite.rc' und das Verzeichnis '/repositories' erstellt.

In '/repositories' sind bereits zwei Repos eingerichtet, gitolite-admin.git und testing.git.

Du kannst nun von außerhalb das Admin Repo auf deinen Computer klonen (achtung, ungeprüft):

git clone xyz00@xyz00.hostsharing.net:gitolite-adminadmin.git

In dem Repo finden sich die zwei Verzeichnisse conf und keydir.

Die Konfiguration der Repos und der Zugriffsrechte schreibt man in conf/gitolite.conf, darin kann man auch Gruppen definieren (deren Namen beginnen mit '@'):

 # Gruppen 
 @programmierer = anton josef 
 @reader = jenkins gitweb anton 

 # Hier stehen die Repos 

 repo gitolite-admin 
     RW+     =   admin 

 repo example.de 
     RW+         = @programmierer 
     R           = @reader 

 repo example-data 
     R       =   @reader 
     RW+     =   @programmierer 

 repo example-blog 
     RW+     =   anton berta

Man definiert also einfach ein neues Repo und die Zugriffsrechte mit einem Eintrag in gitolite.conf.

User entstehen durch gleichnamige Dateien (mit der Endung '.pub') mit den Public-Keys der User im Verzeichnis 'keydir':

 me@on-my-computer ~/gitolite-admin » ls keydir 
 admin.pub  anton.pub berta.pub  jenkins.pub  josef.pub

Das kann man nun wie in Git üblich committen und pushen:

 git add -A
 git commit -m "Start Gitolite Administration"
 git push

Und dann passiert folgendes: Gitolite packt die Keys der User in .ssh/authorized_keys mit einem Command voran, das die Gitolite Shell aufruft.

Und je nachdem wie es in gitolite.conf definiert wurde, haben die User jetzt per SSH Zugriff auf die Repositories, sie können sich einloggen, bekommen aber nur ein Listing zu sehen, das ihre Repos zeigt.

Beachte den Verweis auf das Identity-file:

 me@on-my-computer » ssh -i admin xyz00@xyz00.hostsharing.net
 PTY allocation request failed on channel 0
 hello admin, this is xyz@h00 running gitolite3 3.6.11-2 (Debian) on git 2.20.1
 
  R W	gitolite-admin
  R W	example.de
  R W	example-data
  R W	example-blog
 Connection to deg01.hostsharing.net closed.

Die User können die Repos klonen, und – wenn erlaubt – bearbeiten und wieder pushen.