Gitolite installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 2: Zeile 2:
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Software]]
[[Kategorie:Software]]
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).
Gitolite (https://gitolite.com/gitolite/index.html) ist leichtgewichtiger Server für Git Repositories, der in einem HS Webpaket läuft, ohne dass ein Server (mit eigenem Daemon und Port etc.) installiert sein muss. Es macht in einem Webpaket gehostete Repos über SSH zugänglich. Gitolite ist gut geeignet,wenn eine überschaubare Anzahl Repos und User verwaltet werden soll, es wird gesteuert über ein einziges Configfile und Public-Keys die alle zusammen über Git versioniert sind.
 
== Gitolite einzurichten ist sehr einfach ==


Du brauchst ein SSH-Keypair ('admin'), das dem Gitolite-Admin den Zugang ermöglicht. Dessen Publickey kopiest du in das homedir deines HS-Users.
Du brauchst ein SSH-Keypair ('admin'), das dem Gitolite-Admin den Zugang ermöglicht. Dessen Publickey kopiest du in das homedir deines HS-Users.
Zeile 10: Zeile 11:
Per SSH da eingeloggt, schreibst du:
Per SSH da eingeloggt, schreibst du:


  gitolite setup -pk admin.pub
<syntaxhighlight lang=shell>
gitolite setup -pk admin.pub
</syntaxhighlight>


Damit ist Gitolite in dem Webpaket installiert. Es hat die Konfigurationsdatei '.gitolite.rc' und das Verzeichnis '/repositories' erstellt.
Damit ist Gitolite in dem Webpaket bereits 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.
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):
== Konfiguration ==
 
Du kannst nun von außerhalb das Admin Repo auf deinen Computer klonen (Achtung, ungeprüft):


<syntaxhighlight lang=shell>
git clone xyz00@xyz00.hostsharing.net:gitolite-adminadmin.git
git clone xyz00@xyz00.hostsharing.net:gitolite-adminadmin.git
</syntaxhighlight>
In dem Repo finden sich die zwei Verzeichnisse ''conf'' und ''keydir''.
=== User ===
User entstehen durch gleichnamige Dateien (mit der Endung '.pub') mit den Public-Keys der User im Verzeichnis 'keydir':
<syntaxhighlight lang=shell>
me@on-my-computer ~/gitolite-admin » ls keydir
admin.pub  anton.pub berta.pub  jenkins.pub  josef.pub
</syntaxhighlight>


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


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


  # Gruppen  
<syntaxhighlight lang=ini line>
  @programmierer = anton josef  
# Gruppen  
  @reader = jenkins gitweb anton  
@programmierer = anton josef  
@reader = jenkins gitweb anton  
  # Hier stehen die Repos  
 
# Hier stehen die Repos  
  repo gitolite-admin  
 
      RW+    =  admin  
repo gitolite-admin  
    RW+    =  admin  
  repo example.de  
 
      RW+        = @programmierer  
repo example.de  
      R          = @reader  
    RW+        = @programmierer  
    R          = @reader  
  repo example-data  
 
      R      =  @reader  
repo example-data  
      RW+    =  @programmierer  
    R      =  @reader  
    RW+    =  @programmierer  
  repo example-blog  
 
      RW+    =  anton berta
repo example-blog  
    RW+    =  anton berta
</syntaxhighlight>


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


User entstehen durch gleichnamige Dateien (mit der Endung '.pub') mit den Public-Keys der User im Verzeichnis 'keydir':
=== Konfiguration versionieren und pushen ===
 
  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:
Das kann man nun wie in Git üblich committen und pushen:


  git add -A
<syntaxhighlight lang=shell>
  git commit -m "Start Gitolite Administration"
git add -A
  git push
git commit -m "Start Gitolite Administration"
git push
</syntaxhighlight>


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


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.
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.
Zeile 64: Zeile 85:
Beachte den Verweis auf das Identity-file:
Beachte den Verweis auf das Identity-file:


  me@on-my-computer » ssh -i admin xyz00@xyz00.hostsharing.net
<syntaxhighlight lang=shell>
  PTY allocation request failed on channel 0
me@on-my-computer » ssh -i admin xyz00@xyz00.hostsharing.net
  hello admin, this is xyz@h00 running gitolite3 3.6.11-2 (Debian) on git 2.20.1
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 gitolite-admin
  R W example-data
  R W example.de
  R W example-blog
  R W example-data
  Connection to deg01.hostsharing.net closed.
  R W example-blog
Connection to deg01.hostsharing.net closed.
</syntaxhighlight>


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

Aktuelle Version vom 1. Juli 2024, 11:37 Uhr


Gitolite (https://gitolite.com/gitolite/index.html) ist leichtgewichtiger Server für Git Repositories, der in einem HS Webpaket läuft, ohne dass ein Server (mit eigenem Daemon und Port etc.) installiert sein muss. Es macht in einem Webpaket gehostete Repos über SSH zugänglich. Gitolite ist gut geeignet,wenn eine überschaubare Anzahl Repos und User verwaltet werden soll, es wird gesteuert über ein einziges Configfile und Public-Keys die alle zusammen über Git versioniert sind.

Gitolite einzurichten ist sehr einfach

Du brauchst ein SSH-Keypair ('admin'), das dem Gitolite-Admin den 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 bereits 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.

Konfiguration

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.

User

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

Repositories und Zugriffsrechte

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.

Konfiguration versionieren und pushen

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.

Verwendung

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.