Git Plugin
Git zeigt Git-Repositories, die lokal auf dem Server liegen, im Wiki an: ein Verzeichnis bekannter Repositories, ein streng lesender Zugriff auf git, Quellcode-Einbettung über die Marke {{source>git:…}} sowie ein Browser für Commits und Branches. Geschrieben wird nie. Gedacht ist das Paket für Autoren, die Quellcode auf einer Seite zeigen, und für Verwalter, die Repositories freigeben.
Erste Schritte
Schnelleinstieg: Das erste lokale Repository registrieren — der kürzeste Weg zum ersten Ergebnis, in vier Schritten.
Repository registrieren → Marke auf einer Seite setzen → Absicherung nachvollziehen
Häufige Aufgaben
| Was Sie wollen | Für wen | Wo Sie das tun | Anleitung |
|---|---|---|---|
| ein lokales Repository freigeben | Verwaltung | Konfigurationsmanager | Konfiguration |
| Quellcode aus einem Repository auf einer Seite zeigen | Autor | Marke {{source>git:repo:ref:pfad}} | Zweck |
| Commits und Branches durchsehen | Leser | do=wkdogit | Zweck |
| verstehen, warum nur gelesen wird | alle | – | Wie die Ausführung abgesichert ist |
| ein Repository aus Azure DevOps zeigen | Autor | – | ADO-Git |
| wissen, was dieses Paket nicht leistet | alle | – | Grenzen |
Zweck
Zeigt lokal auf dem Server liegende Git-Repositories im Wiki: eine Registrierung bekannter Repos, ein Commit- und Branch-Browser, Quelltext über die Schublade von Source Viewer Plugin und Verknüpfungen zwischen Arbeitselementen und Quellstellen.
Angemeldeter Dienst (siehe Core Plugin): git.runner; dazu der Quell-Anbieter git:.
- dieses Plugin: „was steht in diesem Klon auf diesem Server„ — es ruft ein
git-Binary auf lokalen Pfaden auf, streng lesend. wkdoadogit: „wer darf was mit dem echten, entfernten Repo“ — es spricht ADO über REST an und stellt einen git-Proxy nach außen.
Beide dürfen nebeneinander laufen.
Wie die Ausführung abgesichert ist
Der Ausführungspfad ist die empfindliche Stelle: hier ruft Wiki-Code ein externes Programm auf. Die Härtung ist deshalb mehrschichtig und nicht abschaltbar:
- Nur argv, keine Shell. Es gibt keine Kommandozeile, die sich durch einen Dateinamen mit Sonderzeichen verbiegen ließe.
- Verb-Positivliste. Nur ausdrücklich erlaubte git-Unterbefehle laufen; alles andere wird abgelehnt, statt gefiltert zu werden.
- Wächter für Ref, Pfad und Repo. Ein Ref oder Pfad, der nicht der erwarteten Form entspricht, kommt nicht bis zum Aufruf.
- Zeitgrenze und Mengenkappung je Aufruf.
- Nur die Objektdatenbank, nie der Arbeitsbaum — es wird nichts ausgecheckt und nichts geschrieben.
Konfiguration
| Einstellung | Vorgabe | Bedeutung |
|---|---|---|
git_binary | leer | absoluter Pfad zu git. Leer = abgeschaltet |
git_repo_root | leer | Wurzel, unterhalb derer Repos registriert/benutzt werden dürfen |
git_timeout_ms | 5000 | Zeitgrenze je Aufruf |
max_bytes | 262144 | Obergrenze beim Lesen eines Blobs |
max_lines | 1000 | Zeilenobergrenze |
browse_page | 50 | Commits je Browserseite (Lastbremse) |
git_repo_root leer heißt „keine zusätzliche Pfadeinschränkung„, nicht „alles gesperrt“.
Wer nur git_binary setzt und das Wurzelfeld leer lässt, öffnet die Registrierung für jeden
Pfad, den der Webserver-Prozess lesen kann. In Produktion beide Felder setzen.
git_binary nicht gesetzt, das Plugin also inaktiv. Es wurde
installiert, weil es zur Familie gehört und der git:-Anbieter im Vertrag von
Source Viewer Plugin vorgesehen ist — in Betrieb genommen wurde es nicht.
Grenzen
- Streng lesend. Kein Commit, kein Push, kein Checkout. Schreibende Wege laufen über wkdoadogit.
- Die Oberfläche zeichnet ihre Überschriften noch selbst und nicht über den geteilten Dokumentenkopf aus wkfluentui; die Umstellung steht aus.
Paketangaben
Plugin: wkdogit
Namespace: lib/plugins/wkdogit/
Autor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Lizenz: GPL 2