Update (1.11.11 22:42): Jonas von den Ubernauten hat mich drauf hingewiesen,
dass man schon mittels gitolite ein Repository über ssh mit mehreren Nutzern
teilen kann, den Post habe ich entsprechend korrigiert. Weiterhin bietet grack
keine wirklichen Vorteile gegenüber dem git-eigenen git-http-backend
, den hatte ich
allerdings “vergessen” weil er als ich auf einem anderen Server einen git
smart-http installiert habe nicht in Frage gekommen war, grack schon.
Kahlil Lechelt hat vor ein paar Monaten in seinem Post UberGit schon gezeigt, wie man Uberspace als privaten git Server über ssh benutzen kann. Diese Methode hat allerdings den Nachteil, dass man Anderen keinen Zugriff auf seine Repositories oder mehreren Leuten Schreibzugriff auf ein gemeinsam-genutztes Repository geben kann. Das Uberspace Wiki beschreibt weiterhin, wie man gitolite installieren kann und damit über ssh mehreren Nutzern Lese- und/oder Schreibzugriff auf Repositories geben kann, bzw. wie man ein Repository über http veröffentlichen kann, hier ist der Schreibzugriff allerdings ausgeschlossen.
Nun, wem unwohl ist anderen Benutzern Zugriff auf sein ssh zu geben, die ssh-Konfiguration für die Endanwender zu kompliziert ist und über http auch schreiben können möchte, dem verschafft grack Abhilfe. grack ist ein in Ruby geschriebener Wrapper um git selbst, der einen git-smart-http-Server über den man Repositories lesen und schreiben kann bereitstellt.
Folgendes Kommando installiert grack im eigenen Uberspace:
1
|
|
Dieses Kommando führt das unten aufgeführte Skript aus, was:
- grack in einen versteckten Ordner
.grack
in deinem Home-Verzeichnis runterlädt, - in
.grack
den Ordnerrepositories
erstellt, von wo grack später Repositories auslesen wird, - einen fcgi-Handler mit der richtigen ruby-Version und grack-Konfiguration für dich erstellt.
Die durch das Skript erstellte Konfiguration erlaubt Lese- aber keinen Schreibzugriff,
um Letzteren zu erlauben muss in der erstellten ~/fcgi-bin/git.fcgi
der Parameter
:receive_pack => false,
zu :receive_pack => true,
geändert werden. Das
fcgi-Skript kann man auch nach Belieben in einen anderen Host als den default Host
installieren, dafür verweise ich aber auf den FastCGI Artikel im Uberspace
Wiki (dort ist übrigens auch beschrieben wie man ein FastCGI Skript neustarten
kann, was nötig ist nachdem man die Konfiguration geändert hat).
Repositories sollten für grack im bare Format vorliegen. Ein neues Repository
legt man mit git init --bare ~/.grack/repositories/repo_name
an, ein existierendes Repository kann man mit
git clone --bare http://example.com/repo_name ~/.grack/repositories/repo_name
clonen. Die Adresse zu einen so erstellten Repository lautet für mich dann
http://thegcat.virgo.uberspace.de/fcgi-bin/git.fcgi/repo_name
, den Account
bzw. Uberhost Namen muss dann jeder für sich anpassen (das Skript gibt die
“Oberadresse” für alle Repositories auch noch mal aus :–) ).
Eine letzte aber wichtige Anmerkung: grack bietet keine Möglichkeit den Zugriff
auf alle oder einzelne Repositories zu verbieten bzw. nur bestimmten Benutzern
zu erlauben, man kann lediglich über die Parameter :upload_pack
bzw.
:receive_pack
Lese- bzw. Schreib-Operationen für alle Repositories zulassen.
Eine feinere Zugangskontrolle muss noch “vor” grack im Uberhost Apache passieren,
dazu aber später von den Ubernauten oder mir noch was.
(Verbesserungsvorschläge gerne auf GitHub :–) )