Repository clonen
Ausgangslage
Sie möchten ein Repository mit einem gewöhnlichen Git-Client clonen und lokal bearbeiten und wissen nicht, welche Adresse und welche Zugangsdaten gelten.
Lösungsweg
Das Wiki stellt die Repositories über einen eigenen Git-Endpunkt bereit. Ein Git-Client spricht ihn wie jeden HTTP-Server an: clone, fetch, pull und push laufen unverändert. Die Anmeldung erfolgt über HTTP-Basic mit einem persönlichen Zugriffstoken, nicht mit dem Wiki-Kennwort.
Die vollständige Adresse steht auf dem Repository-Bildschirm unter Dieses Repository beziehen. Sie wird dort ausgegeben und nicht von Hand zusammengesetzt — sie hängt von der Adresse dieses Wikis und vom Namensraum ab, an dem das Repository eingebunden ist. So sieht eine fertige Adresse aus:
https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
Das ist die Adresse dieses Repositories auf dieser Installation. Für jedes andere Repository lesen Sie sie von dessen Bildschirm ab.
Durchführung
- Erstellen Sie sich ein Zugriffstoken, falls noch keines vorliegt: Zugriffstoken. Die ausführliche Anleitung steht unter Zugriffstoken erstellen.
- Öffnen Sie Repositories und wählen Sie das Repository.
- Klappen Sie Dieses Repository beziehen auf und übernehmen Sie die Adresse mit Kopieren. Ohne aktives JavaScript erscheint die Schaltfläche nicht; dann genügt ein Klick in das Adressfeld, der die Adresse vollständig auswählt.
- Clonen Sie mit dem Git-Client Ihrer Wahl. Auf der Kommandozeile:
git clone https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
- Git fragt nach Benutzername und Kennwort. Tragen Sie ein:
| Feld | Wert |
|---|---|
| Benutzername | beliebig — der Endpunkt prüft ihn nicht |
| Kennwort | Ihr persönliches Zugriffstoken |
- Damit Git nicht bei jedem Aufruf erneut fragt, hinterlegen Sie das Token einmal im Anmeldespeicher. Git für Windows bringt ihn mit:
git config --global credential.helper manager
Alternativ übergeben die Schaltflächen In VS Code öffnen und In JetBrains öffnen dieselbe Adresse an eine installierte Entwicklungsumgebung. VS Code öffnet seinen Clone-Dialog mit vorausgefüllter Adresse; bei JetBrains übernimmt die Toolbox den Aufruf und legt das Projekt in der zuletzt benutzten IDE an. Ist das jeweilige Programm nicht installiert, geschieht nichts — der Browser kann das Protokoll dann niemandem übergeben.
Hinweise
Der Benutzername ist wirklich gleichgültig. Der Endpunkt liest das Basic-Kennwort und greift nur ersatzweise auf den Benutzernamen zurück; das Token allein bestimmt die Identität. Wer nach dem „richtigen„ Benutzernamen sucht, sucht nach etwas, das keine Rolle spielt. Die eine Ausnahme: Lassen Sie das Kennwortfeld nicht leer, sonst wird der Benutzername als Token gelesen und die Anmeldung schlägt fehl.
Vier Stufen, und die Stufe zum Clonen reicht zum Zurückgeben nicht. Was der Endpunkt annimmt, hängt an der Berechtigung auf dem Namensraum, an dem das Repository eingebunden ist:
| Ihre Stufe | clone / fetch / pull | push |
|---|---|---|
| ansehen | abgelehnt | abgelehnt |
| beziehen | funktioniert | abgelehnt |
| vorschlagen | funktioniert | nur unter dem eigenen Branch-Präfix |
| schreiben | funktioniert | uneingeschränkt |
Welche Stufe Sie haben, vergibt die Einbindung des Repositories. Die vier Vorlagen dafür vergeben ansehen, beziehen und schreiben; die Stufe vorschlagen entsteht nur aus einer eigens geschriebenen Regel und ist daher der seltene Fall. Steht im Bereich Dieses Repository beziehen der Hinweis auf reinen Lesezugriff, haben Sie beziehen: ein push wird abgelehnt, und der Weg führt über Zugriff anfordern.
Nur auf der Stufe vorschlagen entscheidet zusätzlich der Branchname. Angenommen werden dann allein die Branches unter Ihrem eigenen Präfix — refs/heads/users/<Ihr Wiki-Anmeldename>/<Thema> —, und ein push auf main wird mit push refused: outside_own_prefix abgewiesen, bevor ein Byte das Quellsystem erreicht. Auf der Stufe schreiben gilt diese Schranke nicht. Wo sie gilt, arbeiten Sie am besten gleich auf einem passend benannten Branch; für den Anmeldenamen mmuster:
git switch -c users/mmuster/tabellen-umbruch git commit -am "Tabellen brechen auf schmalen Anzeigen um" git push -u origin users/mmuster/tabellen-umbruch
Haben Sie bereits auf einem anders benannten Branch committet, geben Sie das Ziel beim push ausdrücklich an, statt den Branch umzubenennen:
git push origin HEAD:refs/heads/users/mmuster/tabellen-umbruch
Was danach mit dem Branch geschieht, steht unter Änderung einreichen.
Ein öffentliches Repository lässt sich ohne Token clonen. Der Endpunkt lässt einen anonymen clone zu, wenn die Einbindung das ausdrücklich erlaubt. Ein Token brauchen Sie erst, wenn das Repository nicht öffentlich ist oder Sie zurückgeben wollen; anonym wird ein push in keinem Fall angenommen.
Mehrere Adressen bei mehrsprachiger Einbindung. Ist ein Repository in mehreren Sprachnamensräumen eingebunden, listet der Bereich je Namensraum eine Adresse. Für einen Clone genügt eine davon; sie führen zum selben Repository, unterliegen aber jeweils den Regeln ihres Namensraums. Die beiden IDE-Schaltflächen übergeben immer die erste — welche Sprache ein Arbeitsverzeichnis hat, ist für einen Clone ohne Bedeutung.
Wenn die Anmeldung wiederholt abgefragt wird. Der Endpunkt antwortet mit 401, solange kein gültiges Token ankommt, und Git fragt daraufhin erneut. Ein zurückgezogenes oder falsch eingefügtes Token sieht dabei genauso aus wie gar keines. Prüfen Sie das Token unter Zugriffstoken und erstellen Sie im Zweifel ein neues.
Verwandte Themen
- Ein gemountetes Repository klonen — dieselbe Aufgabe aus Sicht des Plugins, mit der Tabelle der nötigen Berechtigungsstufen