Sie befinden sich hier: start » de » Interne Dokumentation » DokuWiki-Erweiterungen (WvdS) » ADO-Git » Ein gemountetes Repository klonen

Ein gemountetes Repository klonen

Ausgangslage

Das Repository ist im Wiki sichtbar, es soll aber lokal damit gearbeitet werden — clone, pull und push aus einem gewöhnlichen git-Client, ohne eigene Azure-DevOps-Lizenz.

Lösungsüberblick

Das Plugin bringt einen git-Proxy unter einer eigenen Adresse mit, getrennt von doku.php. Der git-Client spricht mit dem Wiki, das Wiki über den Service-Account mit Azure DevOps. Die Anmeldung läuft über HTTP Basic mit einem persönlichen Token, nie mit dem Wiki-Passwort. Über den Zugriff entscheidet derselbe Tier des Mounts wie im Browser.

Handlung Nötiger Level Anmerkung
clone, fetch und pull 2 beim Tier public genügt ein anonymer Client; bei library und readonly nur ein angemeldeter; bei showcase niemand
push 4 nie anonym; bei Level 4 bis 7 nur in das eigene Branch-Präfix
push in einen beliebigen Branch 8 bei den mitgelieferten Tiers erreicht das @wvdse, beim Tier team die Gruppe maintainers des Projekts
ZIP-Download 2 Schaltfläche auf der Fläche Dieses Repository beziehen

showcase vergibt bewusst kein Bezugsrecht: der Quelltext ist im Browser zu lesen, eine Kopie nimmt niemand. Wer sie braucht, fragt nach library oder höher.

Durchführung

Adresse für clone

Die Adresse entsteht aus dem Mount-Namespace, indem Doppelpunkte zu Schrägstrichen werden:

https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit

Diese Adresse spricht den Mount code:dokuwiki-plugins:wkdoadogit an. Sie müssen sie nicht von Hand zusammensetzen, denn zwei Stellen zeigen sie:

  • Die Fläche Dieses Repository beziehen über dem Baum auf der Seite mit dem Browser. Sie sieht jeder mit Level 2 oder mehr. Neben der Adresse bietet sie den ZIP-Download sowie Links zum Öffnen in Visual Studio Code und JetBrains.
  • Die Mount-Liste in der Administration, im Zeilenmenü des Mounts. Sie sehen nur Administratoren.

Ein mit dem Platzhalter {lang} registrierter Mount hat eine Adresse je Sprache. Das Muster selbst ist keine Adresse und würde abgewiesen.

Persönliches Token

  1. Öffnen Sie /doku.php?do=wkdoadogit_tokens. Dorthin führen auch der Link am Fuß der Fläche Dieses Repository beziehen, das Zeilenmenü des Mounts und der Eintrag Git-Zugriffstoken verwalten in der Befehlspalette.
  2. Tragen Sie eine Bezeichnung ein, etwa Notebook oder CI, und wählen Sie Erstellen.
  3. Kopieren Sie das angezeigte Token sofort. Es erscheint genau einmal, denn gespeichert wird nur sein Hashwert; später lässt es sich nicht mehr abrufen, auch nicht von einem Administrator.
  4. Nicht mehr benötigte Token entfernen Sie mit Widerrufen in derselben Tabelle.

Jedes ausgestellte Token beginnt mit dem Präfix wkg_, damit ein Secret-Scanner oder ein Logfilter es auf den ersten Blick erkennt.

Ist wkidentity installiert, verlangt die Ausstellung eine Sitzung, die mindestens durch eine gewöhnliche Anmeldung nachgewiesen ist; die Installation kann die Anforderung auf einen zweiten Faktor anheben. Bereits ausgestellte Token bleiben beim Verschärfen der Regel gültig, stellen Sie sie nach einer Änderung also neu aus.

Aufruf des Clients

git clone https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit

Auf die Anmeldefrage tragen Sie Ihren Benutzernamen im Wiki ein und als Kennwort das persönliche Token. Der Client nimmt auch das Token als Benutzernamen mit leerem Kennwort an.

Zum dauerhaften Speichern nehmen Sie den Credential-Helper Ihres Clients. Schreiben Sie das Token nicht in die Adresse in .git/config.

Push in das eigene Präfix

Wer Level 4 bis 7 hat, darf nur Branches unterhalb des eigenen Präfixes refs/heads/users/<login>/ bewegen.

git push origin HEAD:refs/heads/users/hmustermann/korrektur

Einen Befehl, der etwas außerhalb dieses Präfixes berührt, weist der Server vollständig ab. Bei Level 8 gibt es diese Einschränkung nicht.

ZIP-Download

Die Schaltfläche Als ZIP herunterladen auf der Fläche Dieses Repository beziehen lädt eine Momentaufnahme des gezeigten Branches. Die Adresse lautet /doku.php?do=wkdoadogit_archive&ns=<namespace>&ref=<branch> und verlangt denselben Level 2 wie clone.

Hinweise

  • Bei Azure DevOps tritt der Service-Account auf. pushedBy ist dort deshalb der Service-Account, der Commit-Author bleibt die Person, die ihn erstellt hat.
  • Ein Rechteentzug gilt ab dem nächsten Request. Rechte werden nicht zwischengespeichert. Bleibt der Zugriff bestehen, suchen Sie den Seiten-Cache oder eine gewährte Gruppe, nicht den Proxy.
  • Der Proxy kennt keine Anmeldeanhebung. Er läuft ohne Sitzung und meldet sich bei jedem Request mit dem Token an, weshalb der zweite Faktor bei der Ausstellung des Tokens verlangt wird und nicht bei jedem Request.
  • Der Server muss PATH_INFO zulassen. Auf Apache erledigt das die mitgelieferte .htaccess mit der Zeile AcceptPathInfo On für git.php. Die mitgelieferte web.config gilt nur für IIS. Ohne das antwortet der Server mit 404, bevor PHP überhaupt startet.
  • Kompression auf dem Weg zerstört den Packfile. Schalten Sie für den Pfad des Proxys kein gzip ein.

Verwandte Themen

de/wiki/dwe/wkdoadogit/howto-clone.txt · Zuletzt geändert: von 0.0.0.0