Gitweb: Browsen der öffentlichen Repos

vcs.mathematik.uni-freiburg.de

Hier kann jeder mit einem Computeraccount im Mathematischen Institut Git-Repositories selbst verwalten.

Kurze Erklärung

(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

Lange Erklärung

1. Übersicht

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.

2. Den ersten SSH-Key anlegen

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.

3. Administration mit gitadmin

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.

4. Checkout eines Git-Repositories

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.

5. Tipps

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