Gitweb: Browsen der öffentlichen Repos
Hier kann jeder mit einem Computeraccount im Mathematischen Institut Git-Repositories selbst verwalten.
(USER, DOMAIN, REPO und DESCRIPTION im Folgenden durch sinnvolle Werte ersetzen)
Beim allerersten Mal muss ein SSH public key hinterlegt werden
ssh USER@vcs.mathematik.uni-freiburg.de < .ssh/id_rsa.pub
Danach loggt man sich immer so ein:
ssh git@vcs.mathematik.uni-freiburg.de
... und gelangt zur Administrationsoberfläche
gitadmin> create_repo DOMAIN REPO DESCRIPTION gitadmin> set_perm DOMAIN REPO USER "RW" gitadmin> set_public DOMAIN REPO true gitadmin> delete_repo DOMAIN REPO
Die Git SSH URL ist git@vcs.mathematik.uni-freiburg.de:DOMAIN/REPO
git clone git@vcs.mathematik.uni-freiburg.de:DOMAIN/REPO
Wie bei Github ist jedes Repo einer Domain zugewiesen, und kann nur zusammen mit dem Namen der Domain identifiziert werden. Der Zweck von Domains ist die Modellierung von administrativen Zuständigkeiten.
Jede Domain hat eine Untermenge aller Benutzer als Administratoren. Als Admin kann man Repos in der Domain anlegen und löschen, und für die Repos Lese- oder Schreibrechte pro Benutzer setzen. Außerdem kann man andere Benutzer zu Administratoren der Domain machen oder die Rechte entziehen.
Jeder Benutzer ist bereits Admin einer Domain mit dem gleichen Namen wie der Benutzeraccount. Es können auf Anfrage auch weitere Domains für Abteilungen oder Benutzergruppen angelegt werden.
Benutzer dürfen außerdem selbsttätig Gastaccounts anlegen. Ein Gastaccount ist ein normaler Account mit der Einschränkung, dass der Accountname mit guest- beginnen muss und er nicht wiederum Gäste anlegen darf.
Die SSH-Schlüssel, mit denen man Zugriff auf das Administrationsinterface gitadmin und die Git-Repos erhält, werden über das Administrationsinterface gitadmin verwaltet. Dieses Henne-Ei-Problem löst man mit einem initialen Passwort-Login:
ssh USER@vcs.mathematik.uni-freiburg.de
Hier ist USER der eigene Accountname in der Mathematik (wer noch keinen Account hat oder bei wem das nicht funktioniert, der schreibt eine Mail an sysadm BEI email mathematik uni-freiburg de).
Hat der Login geklappt, wird man um Eingabe eines SSH public keys gebeten.
Wenn der Zugriff mittels SSH public keys wie oben konfiguriert ist, kann man mit gitadmin loslegen. Zu beachten ist, dass ab sofort immer git@... (und nicht mehr USER@...) für den Zugriff verwendet wird.
Man loggt sich also per SSH ein:
ssh git@vcs.mathematik.uni-freiburg.de
und wird von der gitadmin-Shell begrüßt.
Im folgenden gitadmin Beispiel legt der Benutzer joe, der Admin der gleichnamigen Domain joe ist, das Repo test an und gibt sich selbst Schreibrechte:
gitadmin> create_repo joe test "Joe's test repository" gitadmin> set_perm joe test joe RW
Beispiel wie man einen Gastaccount anlegt:
gitadmin> create_guest guest-max "Max Mustermann (Gast joe)"
Bevor der Gast angelegt wird, wird man Eingabe eines initialen public keys für den Gast gebeten.
Mehr Befehle bekommt man mit "info" aufgelistet.
gitadmin> info
gitadmin funktioniert interaktiv mit Prompt und History (Pfeil-oben/unten). Es kann aber auch als nicht-interaktives Scripting-Interface benutzt werden.
Die SSH URL eines Repos DOMAIN REPO ist git@vcs.mathematik.uni-freiburg.de:DOMAIN/REPO. Mit git kann man also zum Beispiel so ein Repo klonen:
git clone git@vcs.mathematik.uni-freiburg.de:DOMAIN/REPO
Dazu muss ein Admin von DOMAIN Leserechte für den eigenen Benutzer an dem Repo DOMAIN REPO gesetzt haben. (Auch wenn man selbst Admin der Domain ist oder sogar das Repo angelegt hat, muss man sich diese Rechte explizit setzen).
git push funktioniert nur, wenn man auch Schreibrechte hat.
Wenn man gitadmin viel benutzt, können die SSH URLs nervig zu tippen werden. Man kann für ssh in der Datei ~/.ssh/config einen Alias konfigurieren:
Host vcs HostName vcs.mathematik.uni-freiburg.de User git
Danach reichen zB ssh vcs für gitadmin oder git clone vcs:DOMAIN/REPO zum Klonen.
Um Kommandos nicht-interaktiv zu skripten, ist im Moment eine etwas umständliche Syntax vonnöten. Man kann sich aber in der Datei ~/.bashrc folgende Funktion konfigurieren:
gitadmin() { local i for i in "$@" ; do set -- "$@" "\"$(printf %s "$i" | sed 's/"/\\"/g')\"" shift done echo "$@" | ssh -T vcs }
Mit dieser Funktion kann man direkt aus der lokalen Shell gitadmin-Aufrufe durchführen. Beispiel
gitadmin create_repo joe testrepo "my testrepo"
for repo in $(gitadmin repos joe | awk '{print $1}') ; do gitadmin set_perm joe "$repo" jane none done
Der letzte Befehl entfernt für jane die Berechtigungen an allen Repos in joe.
Erstellt: 2015-03-20.
Geändert: 2015-11-08
Bei Problemen, Fragen oder Anregungen bitte eine Mail an die Systemadministratoren: sysadm BEI email mathematik uni freiburg de