Gitolite installieren: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Tbf00 (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
[[Kategorie:Installationsanleitungen]] | [[Kategorie:Installationsanleitungen]] | ||
[[Kategorie:Software]] | [[Kategorie:Software]] | ||
Gitolite | 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 extra für gitolite (z.B. id_gitolite_admin + id_gitolite_admin.pub), das dem Gitolite-Admin den Zugang ermöglicht. Das kannst Du mit ssh-keygen anlegen. Den Publickey kopiest Du in ~/.ssh/id_gitolite_admin.pub (oder einen anderen deskriptiven Namen). | |||
Per SSH da eingeloggt, schreibst Du: | |||
Damit ist Gitolite in dem Webpaket installiert. Es hat die Konfigurationsdatei '.gitolite.rc' und das Verzeichnis '/repositories' erstellt. | <syntaxhighlight lang=shell> | ||
gitolite setup -pk ~/.ssh/id_gitolite_admin.pub | |||
</syntaxhighlight> | |||
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 ( | Auf Deinem lokalen System kannst Du den Zugang für gitolite in der ~/.ssh/config konfigurieren | ||
<syntaxhighlight> | |||
Host xyz00gitadmin | |||
Hostname xyz00.hostsharing.net | |||
User xyz00 | |||
Identityfile ~/.ssh/id_gitolite_admin | |||
</syntaxhighlight> | |||
Dadurch lässt sich der Zugang im nächsten Schritt kürzer schreiben. | |||
== Konfiguration == | |||
Du kannst nun von außerhalb das Admin Repo auf deinen Computer klonen: | |||
<syntaxhighlight lang=shell> | |||
git clone xyz00gitadmin:gitolite-admin | |||
</syntaxhighlight> | |||
Es ist wichtig nicht xyz00:repositories/gitolite-admin.git zu clonen, da es sonst gitolite umgeht. | |||
In dem gitolite-admin 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> | |||
=== 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 '@'): | ||
<syntaxhighlight lang=ini line> | |||
# 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 | |||
</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. | ||
=== Konfiguration versionieren und pushen === | |||
Das kann man nun wie in Git üblich committen und pushen: | Das kann man nun wie in Git üblich committen und pushen: | ||
<syntaxhighlight lang=shell> | |||
git add -A | |||
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 98: | ||
Beachte den Verweis auf das Identity-file: | Beachte den Verweis auf das Identity-file: | ||
<syntaxhighlight lang=shell> | |||
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. | |||
</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 13. März 2025, 10:18 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 extra für gitolite (z.B. id_gitolite_admin + id_gitolite_admin.pub), das dem Gitolite-Admin den Zugang ermöglicht. Das kannst Du mit ssh-keygen anlegen. Den Publickey kopiest Du in ~/.ssh/id_gitolite_admin.pub (oder einen anderen deskriptiven Namen).
Per SSH da eingeloggt, schreibst Du:
gitolite setup -pk ~/.ssh/id_gitolite_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.
Auf Deinem lokalen System kannst Du den Zugang für gitolite in der ~/.ssh/config konfigurieren
Host xyz00gitadmin
Hostname xyz00.hostsharing.net
User xyz00
Identityfile ~/.ssh/id_gitolite_admin
Dadurch lässt sich der Zugang im nächsten Schritt kürzer schreiben.
Konfiguration
Du kannst nun von außerhalb das Admin Repo auf deinen Computer klonen:
git clone xyz00gitadmin:gitolite-admin
Es ist wichtig nicht xyz00:repositories/gitolite-admin.git zu clonen, da es sonst gitolite umgeht.
In dem gitolite-admin 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.