Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]


11.10.31 Versionskontrolldienste

Das Modul (gnu services version-control) stellt einen Dienst zur Verfügung, der einen Fernzugriff auf lokale Git-Repositorys ermöglicht. Dafür gibt es drei Möglichkeiten: den git-daemon-service-type, der Zugang zu Repositorys über das ungesicherte, TCP-basierte git://-Protokoll gewährt, das Erweitern des nginx-Webservers, um ihn als Proxy für Anfragen an das git-http-backend einzusetzen, oder mit dem cgit-service-type eine Weboberfläche zur Verfügung zu stellen.

Variable: git-daemon-service-type

Diensttyp für einen Dienst, der git daemon ausführt. Der Befehl startet den Git-Daemon, einen einfachen TCP-Server, um Repositorys über das Git-Protokoll für anonymen Zugriff zugänglich zu machen.

Der Wert des Dienstes muss ein <git-daemon-configuration>-Verbundsobjekt sein. Nach Vorgabe wird Lese-Zugriff auf exportierte35 Repositorys in /srv/git gewährt.

Datentyp: git-daemon-configuration

Datentyp, der die Konfiguration für git-daemon-service-type repräsentiert.

package (Vorgabe: git)

Paketobjekt des verteilten Versionskontrollsystems Git.

export-all? (Vorgabe: #f)

Ob Zugriff auf alle Git-Repositorys gewährt werden soll, selbst wenn keine git-daemon-export-ok-Datei in ihrem Verzeichnis gefunden wird.

base-path (Vorgabe: /srv/git)

Ob alle Pfadanfragen behandelt werden sollen, als wären sie relativ zum angegebenen Pfad. Wenn Sie git daemon mit (base-path "/srv/git") auf ‘example.com’ ausführen und später versuchen, ‘git://example.com/hello.git’ zu pullen, wird der Git-Daemon den Pfad als /srv/git/hello.git interpretieren.

user-path (Vorgabe: #f)

Ob die ~benutzerkonto-Notation in Anfragen verwendet werden darf. Wird hier die leere Zeichenkette angegeben, werden Anfragen an ‘git://host/~alice/foo’ als Anfragen verstanden, auf das foo-Repository im Persönlichen Verzeichnis des alice-Benutzerkontos verstanden. Wird (user-path "pfad") angegeben, wird dieselbe Anfrage als eine Anfrage verstanden, auf das pfad/foo-Repository im Persönlichen Verzeichnis des alice-Benutzerkontos zuzugreifen.

listen (Vorgabe: '())

Ob auf bestimmte IP-Adressen oder Rechnernamen („Hostnames“) gelauscht werden soll. Vorgegeben ist auf allen.

port (Vorgabe: #f)

Ob auf einer alternativen Portnummer gelauscht werden soll. Vorgegeben ist 9418.

whitelist (Vorgabe: '())

Wenn dies nicht leer gelassen wird, wird nur der Zugriff auf die aufgelisteten Verzeichnisse gewährt.

extra-options (Vorgabe: '())

Zusätzliche Befehlszeilenoptionen, die dem git daemon mitgegeben werden sollen36.

Zugriffe über das git://-Protokoll werden nicht authentifiziert. Wenn Sie von einem Repository pullen, dass Sie über git:// geholt haben, wissen Sie nicht, ob die empfangenen Daten modifiziert wurden oder auch nur vom angegebenen Rechner kommen, und Ihre Verbindung kann abgehört werden. Es ist besser, eine authentifizierte und verschlüsselte Übertragungsart zu verwenden, zum Beispiel https. Obwohl Git es Ihnen ermöglicht, Repositorys über schlichte dateibasierte Webserver anzubieten, gibt es ein schnelleres Protokoll, das vom git-http-backend-Programm implementiert wird. Dieses Programm dient als Hintergrundsystem für einen ordentlichen Git-Webdienst. Es wurde so konstruiert, dass es über einen FastCGI-Proxy abrufbar ist. Siehe Web-Dienste für weitere Informationen, wie Sie den benötigten fcgiwrap-Daemon ausführen.

Guix hat einen separaten Konfigurationsdatentyp, um Git-Repositorys über HTTP anzubieten.

Datentyp: git-http-configuration

Datentyp, der in Zukunft die Konfiguration eines git-http-service-type repräsentieren soll; zurzeit kann damit Nginx über git-http-nginx-location-configuration eingerichtet werden.

package (Vorgabe: git)

Paketobjekt des verteilten Versionskontrollsystems Git.

git-root (Vorgabe: /srv/git)

Das Verzeichnis, das die Git-Repositorys enthält, die der Allgemeinheit zugänglich gemacht werden sollen.

export-all? (Vorgabe: #f)

Ob alle Git-Repositorys in git-root zugänglich gemacht werden sollen, selbst wenn keine git-daemon-export-ok-Datei in ihrem Verzeichnis gefunden wird.

uri-path (Vorgabe: ‘/git/’)

Präfix für Pfade beim Git-Zugriff. Beim vorgegebenen Präfix ‘/git/’ wird ‘http://server/git/repo.git’ auf /srv/git/repo.git abgebildet. Anfragen, deren URI-Pfade nicht mit dem Präfix beginnen, werden nicht an die Git-Instanz weitergereicht.

fcgiwrap-socket (Vorgabe: 127.0.0.1:9000)

Der Socket, auf dem der fcgiwrap-Daemon lauscht. Siehe Web-Dienste.

Es gibt zurzeit keinen git-http-service-type, stattdessen können Sie eine nginx-location-configuration aus einer git-http-configuration heraus erstellen und als Location zu einem Webserver hinzufügen.

Prozedur: git-http-nginx-location-configuration [config=(git-http-configuration)] Eine nginx-location-configuration

berechnen, die der angegebenen Git-HTTP-Konfiguration entspricht. Ein Beispiel für eine nginx-Dienstdefinition, um das vorgegebene /srv/git-Verzeichnis über HTTPS anzubieten, könnte so aussehen:

(service nginx-service-type
         (nginx-configuration
          (server-blocks
           (list
            (nginx-server-configuration
             (listen '("443 ssl"))
             (server-name "git.mein-rechner.org")
             (ssl-certificate
              "/etc/certs/git.mein-rechner.org/fullchain.pem")
             (ssl-certificate-key
              "/etc/certs/git.mein-rechner.org/privkey.pem")
             (locations
              (list
               (git-http-nginx-location-configuration
                (git-http-configuration (uri-path "/"))))))))))

Für dieses Beispiel nehmen wir an, dass Sie Ihr TLS-Zertifikat über Let’s Encrypt beziehen. Siehe Zertifikatsdienste. Der vorgegebene certbot-Dienst leitet alle HTTP-Anfragen nach git.mein-rechner.org auf HTTPS um. Zu Ihren Systemdiensten werden Sie auch einen fcgiwrap-Proxy hinzufügen müssen. Siehe Web-Dienste.

Cgit-Dienst

Cgit ist eine in C geschriebene Weboberfläche als Vordergrundsystem für Git-Repositorys.

Im folgenden Beispiel wird der Dienst mit den vorgegebenen Werten eingerichtet. Nach Vorgabe kann auf Cgit auf Port 80 unter http://localhost:80 zugegriffen werden.

(service cgit-service-type)

Der Typ Dateiobjekt bezeichnet entweder ein dateiartiges Objekt (siehe dateiartige Objekte) oder eine Zeichenkette.

Verfügbare cgit-configuration-Felder sind:

cgit-configuration-Parameter: „package“ package

Das CGIT-Paket.

cgit-configuration-Parameter: „nginx-server-configuration-list“ nginx

NGINX-Konfiguration.

cgit-configuration-Parameter: Dateiobjekt about-filter

Gibt einen Befehl an, der zur Formatierung des Inhalts der Übersichtsseiten aufgerufen wird (sowohl auf oberster Ebene und für jedes Repository).

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette agefile

Gibt einen Pfad relativ zu jedem Repository-Pfad an, unter dem eine Datei gespeichert sein kann, die Datum und Uhrzeit des jüngsten Commits im Repository angibt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Dateiobjekt auth-filter

Gibt einen Befehl an, der aufgerufen wird, um Benutzer zu authentifizieren.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette branch-sort

Wenn diese Option auf ‘age’ gesetzt wurde, wird die Liste der Branch-Referenzen nach Datum sortiert, und wenn sie auf ‘name’ gesetzt wurde, wird nach dem Branch-Namen sortiert.

Die Vorgabe ist ‘"name"’.

cgit-configuration-Parameter: Zeichenkette cache-root

Pfad, unter dem Cgit-Zwischenspeichereinträge abgelegt werden.

Die Vorgabe ist ‘"/var/cache/cgit"’.

cgit-configuration-Parameter: Ganze-Zahl cache-static-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherungen für Repository-Seiten mit fester SHA1-Summe gültig bleiben, auf die zugegriffen wird („Time-to-live“).

Die Vorgabe ist ‘-1’.

cgit-configuration-Parameter: Ganze-Zahl cache-dynamic-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherungen für Repository-Seiten mit veränderlicher SHA1-Summe gültig bleiben, auf die zugegriffen wird.<

Die Vorgabe ist ‘5’.

cgit-configuration-Parameter: Ganze-Zahl cache-repo-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherungen für die Übersichtsseiten („summary“) von Repositorys gültig bleiben.

Die Vorgabe ist ‘5’.

cgit-configuration-Parameter: Ganze-Zahl cache-root-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherung der Seite mit dem Repository-Index gültig bleibt.

Die Vorgabe ist ‘5’.

cgit-configuration-Parameter: Ganze-Zahl cache-scanrc-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherung des Ergebnisses einer Suche in einem Pfad nach Git-Repositorys gültig bleibt.

Die Vorgabe ist ‘15’.

cgit-configuration-Parameter: Ganze-Zahl cache-about-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherungen für die Beschreibungsseiten („about“) von Repositorys gültig bleiben.

Die Vorgabe ist ‘15’.

cgit-configuration-Parameter: Ganze-Zahl cache-snapshot-ttl

Zahl, die angibt, wie viele Minuten die Zwischenspeicherungen für die Snapshots von Repositorys gültig bleiben.

Die Vorgabe ist ‘5’.

cgit-configuration-Parameter: Ganze-Zahl cache-size

Wie viele Einträge der Cgit-Zwischenspeicher höchstens haben kann. Wird ‘0’ festgelegt, wird nicht zwischengespeichert.

Die Vorgabe ist ‘0’.

cgit-configuration-Parameter: Boolescher-Ausdruck case-sensitive-sort?

Ob beim Sortieren von Objekten in der Repository-Liste die Groß-/Kleinschreibung beachtet werden soll.

Die Vorgabe ist ‘#t’.

cgit-configuration-Parameter: Liste clone-prefix

Liste gemeinsamer Präfixe, von denen ein Repository geklont werden kann. D.h. dass, wenn eines mit einer Repository-URL kombiniert wird, eine gültige URL zum Klonen des Repositorys entsteht.

Die Vorgabe ist ‘'()’.

cgit-configuration-Parameter: Liste clone-url

Liste von Schablonen, aus denen eine clone-url entsteht.

Die Vorgabe ist ‘'()’.

cgit-configuration-Parameter: Dateiobjekt commit-filter

Befehl, mit dem Commit-Nachrichten formatiert werden.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette commit-sort

Wenn diese Option als ‘date’ festgelegt wird, wird das Commit-Log streng nach Datum geordnet. Wenn sie auf ‘topo’ gesetzt ist, wird es streng topologisch geordnet.

Die Vorgabe ist ‘"git log"’.

cgit-configuration-Parameter: Dateiobjekt css

URL, die angibt, welches CSS-Dokument von jeder Cgit-Seite eingebunden werden soll.

Die Vorgabe ist ‘"/share/cgit/cgit.css"’.

cgit-configuration-Parameter: Dateiobjekt email-filter

Gibt einen Befehl an, um die Namen und E-Mail-Adressen der Committer, Autoren und Tagger zu formatieren, die an verschiedenen Stellen in der Oberfläche von Cgit vorkommen.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Boolescher-Ausdruck embedded?

Wenn diese Option auf ‘#t’ gesetzt ist, wird Cgit ein HTML-Fragment erzeugen, das für die Einbettung in andere HTML-Seiten geeignet ist.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-commit-graph?

Wenn diese Option auf ‘#t’ gesetzt ist, wird Cgit den Graphen der Commit-Historie links von den Commit-Nachrichten auf den Commit-Log-Seiten mit ASCII-Zeichen darstellen.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-filter-overrides?

Wenn diese Option auf ‘#t’ gesetzt ist, können alle Filtereinstellungen durch die cgitrc-Dateien für das jeweilige Repository geändert werden.

Vorgegeben ist ‘#f’.

Wenn diese Option auf ‘#t’ gesetzt ist, können Benutzer in der Log-Ansicht einer Datei folgen („–follow“).

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-http-clone?

Wenn es auf ‘#t’ gesetzt ist, kann Cgit als Endpunkt für eine Dumb-HTTP-Übertragung mit „git clone“ benutzt werden.

Die Vorgabe ist ‘#t’.

Wenn diese Option auf ‘#t’ gesetzt ist, legt Cgit für jedes Repository zusätzlich Hyperlinks „summary“, „commit“, „tree“ im Repository-Index an.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-index-owner?

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit den Besitzer für jedes Repository im Repository-Index an.

Die Vorgabe ist ‘#t’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-log-filecount?

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit für jeden Commit auf den Repository-Log-Seiten die geänderten Dateien an.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-log-linecount?

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit für jeden Commit auf den Repository-Log-Seiten die Anzahl der hinzugefügten und entfernten Zeilen an.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-remote-branches?

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit unter den „summary“- und „ref“-Seiten entfernte Branches an.

Vorgegeben ist ‘#f’.

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit für Links auf Eltern-Commits die Betreffzeile des Eltern-Commits als Linktext in der Commit-Ansicht an.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-html-serving?

Flag which, when set to ‘#t’, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-tree-linenumbers?

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit für jeden Blob aus reinem Text Links auf dessen Zeilennummern in der Baumansicht („tree“) an.

Die Vorgabe ist ‘#t’.

cgit-configuration-Parameter: Boolescher-Ausdruck enable-git-config?

Flag which, when set to ‘#f’, will allow cgit to use Git config to set any repo specific settings.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Dateiobjekt favicon

URL, auf der ein Cgit-Symbol für die Anzeige in einem Webbrowser zu finden ist.

Die Vorgabe ist ‘"/favicon.ico"’.

Der Inhalt der für diese Option angegebenen Datei wird wortwörtlich am Ende jeder Seite eingefügt (d.h. er ersetzt die vorgegebene Mitteilung „generated by …“).

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette head-include

Der Inhalt der für diese Option angegebenen Datei wird wortwörtlich im HTML-HEAD-Bereich jeder Seite eingefügt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette header

Der Inhalt der für diese Option angegebenen Datei wird wortwörtlich am Anfang jeder Seite eingefügt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Dateiobjekt include

Der Name einer Konfigurationsdatei, deren Inhalt eingefügt werden soll, bevor die übrige hier angegebene Konfiguration eingelesen wird.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette index-header

Der Inhalt der mit dieser Option angegebenen Datei wird wortwörtlich oberhalb des Repository-Index eingefügt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette index-info

Der Inhalt der mit dieser Option angegebenen Datei wird wortwörtlich unterhalb der Überschrift auf jeder Repository-Index-Seite eingefügt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Boolescher-Ausdruck local-time?

Wenn diese Option auf ‘#t’ gesetzt ist, gibt Cgit die Zeitstempel von Commits und Tags in der Zeitzone des Servers an.

Vorgegeben ist ‘#f’.

URL, unter der ein Bild zu finden ist, das auf allen Cgit-Seiten als Logo zu sehen sein wird.

Die Vorgabe ist ‘"/share/cgit/cgit.png"’.

URL, die geladen wird, wenn jemand auf das Logo-Bild klickt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Dateiobjekt owner-filter

Befehl, der aufgerufen wird, um die Besitzerspalte auf der Hauptseite zu formatieren.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Ganze-Zahl max-atom-items

Anzahl der Objekte, die in der Atom-Feed-Ansicht angezeigt werden sollen.

Die Vorgabe ist ‘10’.

cgit-configuration-Parameter: Ganze-Zahl max-commit-count

Anzahl der Einträge, die in der Log-Ansicht pro Seite angezeigt werden sollen.

Die Vorgabe ist ‘50’.

cgit-configuration-Parameter: Ganze-Zahl max-message-length

Anzahl der Zeichen, die in der Log-Ansicht von jeder Commit-Nachricht angezeigt werden sollen.

Die Vorgabe ist ‘80’.

cgit-configuration-Parameter: Ganze-Zahl max-repo-count

Gibt an, wie viele Einträge auf jeder Seite der Repository-Index-Seiten stehen.

Die Vorgabe ist ‘50’.

cgit-configuration-Parameter: Ganze-Zahl max-repodesc-length

Gibt die maximale Anzahl der Zeichen an, die von jeder Repository-Beschreibung auf den Repository-Index-Seiten angezeigt werden sollen.

Die Vorgabe ist ‘80’.

cgit-configuration-Parameter: Ganze-Zahl max-blob-size

Gibt die maximale Größe eines Blobs in Kilobytes an, für den HTML angezeigt werden soll.

Die Vorgabe ist ‘0’.

cgit-configuration-Parameter: Zeichenkette max-stats

Maximaler Zeitraum für Statistiken. Gültige Werte sind ‘week’ (Woche), ‘month’ (Monat), ‘quarter’ (Quartal) und ‘year’ (Jahr).

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Mimetype-Assoziative-Liste mimetype

Mimetype je für die angegebene Dateinamenserweiterung.

Die Vorgabe ist ‘'((gif "image/gif") (html "text/html") (jpg "image/jpeg") (jpeg "image/jpeg") (pdf "application/pdf") (png "image/png") (svg "image/svg+xml"))’.

cgit-configuration-Parameter: Dateiobjekt mimetype-file

Gibt an, welche Datei zur automatischen Auflösung des Mimetypes benutzt werden soll.

Die Vorgabe ist ‘""’.

Text, der als Formatzeichenkette für einen Hyperlink benutzt wird, wenn in einer Verzeichnisauflistung ein Submodul ausgegeben wird.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Boolescher-Ausdruck nocache?

Wenn dies auf ‘#t’ gesetzt ist, wird nicht zwischengespeichert.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck noplainemail?

Wenn dies auf ‘#t’ gesetzt ist, werden keine vollen E-Mail-Adressen angezeigt.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Boolescher-Ausdruck noheader?

Wenn diese Option auf ‘#t’ gesetzt ist, wird Cgit die Standardseitenkopf auf allen Seiten weglassen.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Projektliste project-list

Eine Liste der Unterverzeichnisse innerhalb des mit repository-directory festgelegten Verzeichnisses, relativ dazu angegeben, die als Git-Repositorys geladen werden sollen. Eine leere Liste bedeutet, dass alle Unterverzeichnisse geladen werden.

Die Vorgabe ist ‘'()’.

cgit-configuration-Parameter: Dateiobjekt readme

Text, der als voreingestellter Wert für readme in repository-cgit-configuration benutzt wird.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Boolescher-Ausdruck remove-suffix?

Wenn es auf #t gesetzt ist und repository-directory aktiviert ist, wird, wenn Repositorys mit einem Suffix von .git gefunden werden, dieses Suffix von der URL und dem Namen weggelassen.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Ganze-Zahl renamelimit

Maximale Anzahl der Dateien, die bei der Erkennung von Umbenennungen berücksichtigt werden.

Die Vorgabe ist ‘-1’.

cgit-configuration-Parameter: Zeichenkette repository-sort

Auf welche Art Repositorys in jedem Abschnitt sortiert werden.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Robots-Liste robots

Text, der als Inhalt des robots-Meta-Tags dienen soll.

Die Vorgabe ist ‘'("noindex" "nofollow")’.

cgit-configuration-Parameter: Zeichenkette root-desc

Welcher Text unterhalb der Überschrift auf Repository-Index-Seiten ausgegeben wird.

Die Vorgabe ist ‘"a fast webinterface for the git dscm"’.

cgit-configuration-Parameter: Zeichenkette root-readme

Der Inhalt der mit dieser Option angegebenen Datei wird wortwörtlich unter dem „about“-Link auf der Repository-Index-Seite angezeigt.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette root-title

Welcher Text als Überschrift auf Repository-Index-Seiten ausgegeben werden soll.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Boolescher-Ausdruck scan-hidden-path

Wenn es auf ‘#t’ gesetzt ist und repository-directory aktiviert ist, wird repository-directory in Verzeichnissen rekursiv schauen, deren Name mit einem Punkt beginnt. Ansonsten werden solche Verzeichnisse unter repository-directory als „versteckt“ betrachtet und ignoriert. Beachten Sie, dass dies keine Wirkung auf das .git-Verzeichnis in nicht auf „bare“ gestellten Repositorys hat.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Liste snapshots

Dieser Text gibt an, für welche Snapshot-Formate Cgit Links erzeugt.

Die Vorgabe ist ‘'()’.

cgit-configuration-Parameter: Repository-Verzeichnis repository-directory

Der Name des Verzeichnisses, in dem nach Repositorys gesucht wird (wird als scan-path in die Einstellungen übernommen).

Die Vorgabe ist ‘"/srv/git"’.

cgit-configuration-Parameter: Zeichenkette section

Der Name des aktuellen Abschnitts („section“) für Repositorys – alle später definierten Repositorys werden den aktuellen Abschnittsnamen erben.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette section-sort

Wenn diese Option auf ‘#t’ gesetzt wird, werden die Abschnitte in Repository-Auflistungen nach Namen sortiert.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Ganze-Zahl section-from-path

Wenn diese Zahl vor „repository-directory“ definiert wurde, gibt sie an, wie viele Pfadelemente jedes Repository-Pfads für den Abschnittsnamen voreingestellt verwendet werden.

Die Vorgabe ist ‘0’.

cgit-configuration-Parameter: Boolescher-Ausdruck side-by-side-diffs?

Wenn es auf ‘#t’ gesetzt ist, werden Diffs nach Voreinstellung in Nebeneinanderdarstellung („side by side“) statt als zusammengeführte „Unidiffs“ angezeigt.

Vorgegeben ist ‘#f’.

cgit-configuration-Parameter: Dateiobjekt source-filter

Gibt einen Befehl an, der aufgerufen wird, um Klartext-Blobs in der Baumansicht („tree“) zu formatieren.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Ganze-Zahl summary-branches

Gibt die Anzahl der Branches an, die in der „summary“-Ansicht eines Repositorys zu sehen sein sollen.

Die Vorgabe ist ‘10’.

cgit-configuration-Parameter: Ganze-Zahl summary-log

Gibt die Anzahl der Log-Einträge an, die in der „summary“-Ansicht eines Repositorys zu sehen sein sollen.

Die Vorgabe ist ‘10’.

cgit-configuration-Parameter: Ganze-Zahl summary-tags

Gibt die Anzahl in der „summary“-Ansicht eines Repositorys anzuzeigender Tags an.

Die Vorgabe ist ‘10’.

cgit-configuration-Parameter: Zeichenkette strict-export

Wenn dieser Dateiname angegeben wird, muss eine Datei diesen Namens in einem Repository enthalten sein, damit es angezeigt wird.

Die Vorgabe ist ‘""’.

cgit-configuration-Parameter: Zeichenkette virtual-root

Wird diese URL angegeben, wird sie als Wurzel für alle Cgit-Links verwendet.

Die Vorgabe ist ‘"/"’.

cgit-configuration-Parameter: „repository-cgit-configuration“-Liste repositories

Eine Liste von repository-cgit-configuration-Verbundsobjekten.

Die Vorgabe ist ‘'()’.

Verfügbare repository-cgit-configuration-Felder sind:

repository-cgit-configuration-Parameter: Repo-Liste snapshots

Eine Maske, die für dieses Repository auf die Snapshots gelegt wird, für die Cgit Links erzeugt. Dadurch kann die globale Einstellung snapshots eingeschränkt werden.

Die Vorgabe ist ‘'()’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt source-filter

Die Voreinstellung für source-filter ersetzen.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette url

Die relative URL, mit der auf das Repository zugegriffen wird.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt about-filter

Die Voreinstellung für about-filter ersetzen.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette branch-sort

Wenn diese Option auf ‘age’ gesetzt wurde, wird die Liste der Branch-Referenzen nach Datum sortiert, und wenn sie auf ‘name’ gesetzt wurde, wird nach dem Branch-Namen sortiert.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Liste clone-url

Eine Liste von URLs, von denen das Repository geklont werden kann.

Die Vorgabe ist ‘'()’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt commit-filter

Die Voreinstellung für commit-filter ersetzen.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt commit-sort

Wenn diese Option als ‘date’ festgelegt wird, wird das Commit-Log streng nach Datum geordnet. Wenn sie auf ‘topo’ gesetzt ist, wird es streng topologisch geordnet.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette defbranch

Der Name des voreingestellten Branches dieses Repositorys. Wenn kein solcher Branch im Repository existiert, wird der erste Branchname in sortierter Reihenfolge voreingestellt. Nach Vorgabe wird der Branch voreingestellt, auf den HEAD zeigt, oder „master“, wenn es keinen passenden HEAD gibt.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette desc

Der Wert, der als Repository-Beschreibung angezeigt werden soll.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette homepage

Der Wert, der als Repository-Homepage angezeigt werden soll.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt email-filter

Die Voreinstellung für email-filter ersetzen.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Vielleicht-Repo-Boolescher-Ausdruck enable-commit-graph?

Eine Option, mit der die globale Einstellung für enable-commit-graph? deaktiviert werden kann.

Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

repository-cgit-configuration-Parameter: Vielleicht-Repo-Boolescher-Ausdruck enable-log-filecount?

Eine Option, mit der die globale Einstellung für enable-log-filecount? deaktiviert werden kann.

Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

repository-cgit-configuration-Parameter: Vielleicht-Repo-Boolescher-Ausdruck enable-log-linecount?

Eine Option, mit der die globale Einstellung für enable-log-linecount? deaktiviert werden kann.

Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

repository-cgit-configuration-Parameter: Vielleicht-Repo-Boolescher-Ausdruck enable-remote-branches?

Wenn diese Option auf ‘#t’ gesetzt ist, zeigt Cgit unter den „summary“- und „ref“-Seiten entfernte Branches an.

Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

Eine Option, mit der die globale Einstellung für enable-subject-links? deaktiviert werden kann.

Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

repository-cgit-configuration-Parameter: Vielleicht-Repo-Boolescher-Ausdruck enable-html-serving?

Eine Option, mit der die globale Einstellung für enable-html-serving? deaktiviert werden kann.

Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

repository-cgit-configuration-Parameter: Repo-Boolescher-Ausdruck hide?

Wenn diese Option auf #t gesetzt ist, wird das Repository im Repository-Index verborgen.

Vorgegeben ist ‘#f’.

repository-cgit-configuration-Parameter: Repo-Boolescher-Ausdruck ignore?

Wenn diese Option auf #t gesetzt ist, wird das Repository ignoriert.

Vorgegeben ist ‘#f’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt logo

URL, unter der ein Bild zu finden ist, das auf allen Seiten dieses Repositorys als Logo zu sehen sein wird.

Die Vorgabe ist ‘""’.

URL, die geladen wird, wenn jemand auf das Logo-Bild klickt.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Dateiobjekt owner-filter

Die Voreinstellung für owner-filter ersetzen.

Die Vorgabe ist ‘""’.

Text, der als Formatzeichenkette für einen Hyperlink benutzt wird, wenn in einer Verzeichnisauflistung ein Submodul ausgegeben wird. Die Argumente für diese Formatzeichenkette sind Pfad und SHA1 des Submodul-Commits.

Die Vorgabe ist ‘""’.

Text, der als Formatzeichenkette für einen Hyperlink benutzt wird, wenn in einer Verzeichnisauflistung ein Submodul mit dem angegebenen Unterverzeichnispfad ausgegeben wird.

Die Vorgabe ist ‘'()’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette max-stats

Die Voreinstellung für den maximalen Zeitraum für Statistiken ersetzen.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette name

Welcher Wert als Repository-Name angezeigt werden soll.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette owner

Ein Wert, um den Besitzer des Repositorys zu identifizieren.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette path

Ein absoluter Pfad zum Repository-Verzeichnis.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette readme

Ein Pfad (relativ zum Repository), der eine Datei angibt, deren Inhalt wortwörtlich auf der „About“-Seite dieses Repositorys eingefügt werden soll.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Zeichenkette section

Der Name des aktuellen Abschnitts („section“) für Repositorys – alle später definierten Repositorys werden den aktuellen Abschnittsnamen erben.

Die Vorgabe ist ‘""’.

repository-cgit-configuration-Parameter: Repo-Liste extra-options

Zusätzliche Optionen werden an die cgitrc-Datei angehängt.

Die Vorgabe ist ‘'()’.

cgit-configuration-Parameter: Liste extra-options

Zusätzliche Optionen werden an die cgitrc-Datei angehängt.

Die Vorgabe ist ‘'()’.

Aber es könnte auch sein, dass Sie schon eine cgitrc haben und zum Laufen bringen wollen. In diesem Fall können Sie eine opaque-cgit-configuration als Verbundsobjekt an cgit-service-type übergeben. Wie der Name schon sagt, bietet eine opake Konfiguration keinerlei Unterstützung für Reflexion.

Verfügbare opaque-cgit-configuration-Felder sind:

opaque-cgit-configuration-Parameter: „package“ cgit

Das cgit-Paket.

opaque-cgit-configuration-Parameter: Zeichenkette string

Der Inhalt für cgitrc als eine Zeichenkette.

Wenn zum Beispiel Ihre cgitrc nur aus der leeren Zeichenkette bestehen soll, könnten Sie einen Cgit-Dienst auf diese Weise instanziieren:

(service cgit-service-type
         (opaque-cgit-configuration
          (cgitrc "")))

Gitolite-Dienst

Gitolite ist ein Werkzeug, um Git-Repositorys anderen auf einem zentralen Server anzubieten.

Gitolite kann mehrere Nutzer mit mehreren Repositorys bedienen und unterstützt flexible Konfigurationsmöglichkeiten der Berechtigungen der Repository-Nutzer.

Das folgende Beispiel richtet Gitolite für den voreingestellten git-Benutzer und den angegebenen öffentlichen SSH-Schlüssel ein.

(service gitolite-service-type
         (gitolite-configuration
           (admin-pubkey (plain-file
                           "ihrname.pub"
                           "ssh-rsa AAAA… guix@example.com"))))

Sie konfigurieren Gitolite, indem Sie ein besonderes Admin-Repository anpassen. Sie können es zum Beispiel klonen, indem Sie, wenn Sie Gitolite auf example.com eingerichtet haben, den folgenden Befehl zum Klonen des Admin-Repositorys ausführen:

git clone git@example.com:gitolite-admin

Wenn der Gitolite-Dienst aktiviert wird, wird der mitgegebene admin-pubkey ins keydir-Verzeichnis vom „gitolite-admin“-Repository eingefügt. Wenn sich dadurch das Repository ändert, wird die Änderung mit der Commit-Nachricht „gitolite setup by GNU Guix“ commitet.

Datentyp: gitolite-configuration

Repräsentiert die Konfiguration vom gitolite-service-type.

package (Vorgabe: gitolite)

Welches Gitolite-Paket benutzt werden soll. Sie können hiermit auch optionale Abhängigkeiten von Gitolite, die nicht im Standard-Gitolite-Paket enthalten sind, hinzufügen, wie Redis und git-annex. Diese Funktionalitäten können Sie mit der Prozedur make-gitolite aus dem Modul (gnu packages version-control) verfügbar machen, welche eine Variante von Gitolite erzeugt, bei der die gewünschten Abhängigkeiten vorhanden sind.

Folgender Code liefert ein Paket zurück, wo die Programme Redis und git-annex durch die Skripte von Gitolite aufrufbar sind:

(use-modules (gnu packages databases)
             (gnu packages haskell-apps)
             (gnu packages version-control))
(make-gitolite (list redis git-annex))
user (Vorgabe: git)

Welches Benutzerkonto für Gitolite benutzt werden soll. Mit diesem Benutzer werden Sie über SSH auf Gitolite zugreifen.

group (Vorgabe: git)

Gruppe für Gitolite.

home-directory (Vorgabe: "/var/lib/gitolite")

Das Verzeichnis, in dem die Gitolite-Konfiguration und Repositorys gespeichert werden sollen.

rc-file (Vorgabe: (gitolite-rc-file))

Ein dateiartiges Objekt (siehe dateiartige Objekte), das die Konfiguration für Gitolite repräsentiert.

admin-pubkey (Vorgabe: #f)

Ein dateiartiges Objekt (siehe dateiartige Objekte), mit dem Gitolite eingerichtet werden kann. Er wird in das keydir-Verzeichnis im „gitolite-admin“-Repository eingefügt.

Um einen SSH-Schlüssel als Zeichenkette anzugeben, benutzen Sie die plain-file-Funktion.

(plain-file "ihrname.pub" "ssh-rsa AAAA… guix@example.com")
Datentyp: gitolite-rc-file

Repräsentiert die Gitolie-RC-Datei.

umask (Vorgabe: #o0077)

Dies legt fest, welche Berechtigungen Gitolite an die Repositorys und deren Inhalt vergibt.

Für einen Wert wie #o0027 wird die Gruppe, die Gitolite benutzt (nach Vorgabe: git) Lesezugriff erhalten. Das ist nötig, wenn Sie Gitolite mit Software wie Cgit oder Gitweb kombinieren.

local-code (Vorgabe: "$rc{GL_ADMIN_BASE}/local")

Hiermit können Sie eigene Programme zu den als „non-core“ eingestuften hinzufügen oder sogar die mitgelieferten Programme durch Ihre eigenen ersetzen.

Bitte geben Sie für diese Variable den vollständigen Pfad an. Vorgegeben ist, dass das Verzeichnis namens "local" in Ihrem Klon des Gitolite-Repositorys benutzt wird. Dadurch haben Sie den Vorteil, dass alles versioniert wird, und können Änderungen vornehmen, ohne sich auf dem Server anmelden zu müssen.

unsafe-pattern (Vorgabe: #f)

Optional ein Perl-kompatibler regulärer Ausdruck, um unsichere Konfigurationen in der Konfigurationsdatei zu unterbinden. Siehe die Dokumentation von Gitolite für weitere Informationen.

Wenn als Wert nicht #f angegeben wird, muss es eine Zeichenkette mit einem Perl-kompatiblen regulären Ausdruck sein wie ‘"[`~#\$\&()|;<>]"’, was der Voreinstellung von Gitolite entspricht. Damit wird unterbunden, jegliche Sonderzeichen in die Konfiguration zu schreiben, die von einer Shell interpretiert werden könnten, damit die Administration auch auf andere Leute übertragen werden kann, die sonst keinen Shell-Zugriff auf dem Server haben.

git-config-keys (Vorgabe: "")

Mit Gitolite können Sie Werte für Git-Konfigurationen über das ‘config’-Schlüsselwort festlegen. Mit dieser Einstellung können Sie steuern, welche Konfigurationsschlüssel akzeptiert werden.

roles (Vorgabe: '(("READERS" . 1) ("WRITERS" . )))

Legt fest, welche Rollennamen für Nutzer möglich sind, wenn Sie den Befehl perms ausführen.

enable (Vorgabe: '("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb"))

Diese Einstellung legt die innerhalb von Gitolite zur Verfügung gestellten Befehle fest.

Gitile-Dienst

Mit Gitile kann eine eigene Git-„Forge“ aufgesetzt werden, wo sich jeder über einen Web-Browser den Inhalt von Git-Repositorys ansehen kann.

Am besten kombiniert man Gitile mit Gitolite, und Gitile bietet nach Voreinstellung die für die Öffentlichkeit bestimmten Repositorys von Gitolite an. Der Dienst sollte auf einem lokalen Port lauschen, und ein Webserver sollte eingerichtet werden, um Gitiles statische Ressourcen anzubieten. Für den Gitile-Dienst kann der Nginx-Dienst einfach zu diesem Zweck erweitert werden (siehe NGINX).

Im Folgenden sehen Sie ein Beispiel, wie Gitile konfiguriert wird, um Repositorys von einem selbst ausgewählten Ort anzubieten, zusammen mit etwas Text für die Hauptseite und Fußzeilen.

(service gitile-service-type
         (gitile-configuration
           (repositories "/srv/git")
           (base-git-url "https://meineweb.site/git")
           (index-title "Meine Git-Repositorys")
           (intro '((p "Hier sind all meine öffentlichen Werke!")))
           (footer '((p "Nun ist Schluss")))
           (nginx-server-block
             (nginx-server-configuration
               (ssl-certificate
                 "/etc/certs/meineweb.site/fullchain.pem")
               (ssl-certificate-key
                 "/etc/certs/meineweb.site/privkey.pem")
               (listen '("443 ssl http2" "[::]:443 ssl http2"))
               (locations
                 (list
                   ;; Anonymen Abruf über HTTPS von „/git/“-URLs zulassen.
                   (git-http-nginx-location-configuration
                     (git-http-configuration
                       (uri-path "/git/")
                       (git-root "/var/lib/gitolite/repositories")))))))))

Neben dem Konfigurations-Verbundsobjekt sollten Sie auch bei Ihren Git-Repositorys ein paar optionale Informationen darüber eintragen. Zunächst werden Repositorys nur für die Allgemeinheit zugänglich, wenn sie die magische Datei git-daemon-export-ok enthalten. Gitile erkennt daran, welche Repositorys öffentlich sind und zugänglich gemacht werden sollen. Bei Gitolite heißt das zum Beispiel, Sie ändern Ihre conf/gitolite.conf, dass dort für die öffentlich zu machenden Repositorys Folgendes steht:

repo foo
    R = daemon

Zusätzlich kann Gitile aus der Repository-Konfiguration weitere Informationen über das Repository auslesen und anzeigen. Gitile verwendet für seine Konfiguration den gitweb-Namensraum. Zum Beispiel kann Ihre conf/gitolite.conf Folgendes enthalten:

repo foo
    R = daemon
    desc = Eine lange Beschreibung, gerne auch mit <i>HTML</i>-Tags, für die Seite mit dem Repository-Index
    config gitweb.name = Das Projekt Foo
    config gitweb.synopsis = Eine kurze Beschreibung für die Hauptseite des Projekts

Denken Sie daran, die Änderungen auch zu commiten und zu pushen, sobald Sie zufrieden sind. Vielleicht müssen Sie Ihre gitolite-Konfiguration anpassen, damit die genannten Konfigurationsoptionen zulässig sind. Eine Möglichkeit ist folgende Dienstdefinition:

(service gitolite-service-type
          (gitolite-configuration
            (admin-pubkey (local-file "key.pub"))
            (rc-file
              (gitolite-rc-file
                (umask #o0027)
                ;; Man soll jeden Konfigurationsschlüssel setzen dürfen
                (git-config-keys ".*")
                ;; Jeder Text soll ein gültiger Konfigurationswert sein
                (unsafe-patt "^$")))))
Datentyp: gitile-configuration

Repräsentiert die Konfiguration vom gitile-service-type.

package (Vorgabe: gitile)

Welches Gitile-Paket benutzt werden soll.

host (Vorgabe: "localhost")

Der Rechnername, auf den Gitile lauscht.

port (Vorgabe: 8080)

Der Port, auf dem Gitile lauscht.

database (Vorgabe: "/var/lib/gitile/gitile-db.sql")

Wo die Datenbank liegt.

repositories (Vorgabe: "/var/lib/gitolite/repositories")

Wo die Repositorys zu finden sind. Beachten Sie: Gitile zeigt nur öffentliche Repositorys an. Um ein Repository öffentlich zu machen, fügen Sie eine leere Datei git-daemon-export-ok in das Wurzelverzeichnis des Repositorys ein.

base-git-url

Die Basis-Git-URL, von der angezeigt wird, dass man Befehle zum Klonen darauf ausführen kann.

index-title (Vorgabe: "Index")

Der Seitentitel der Index-Seite mit der Liste aller verfügbaren Repositorys.

intro (Vorgabe: '())

Der Inhalt der Einführung als Liste von SXML-Ausdrücken. Sie wird über der Liste der Repositorys auf der Index-Seite angezeigt.

footer (Vorgabe: '())

Der Inhalt der Fußzeile als Liste von SXML-Ausdrücken. Sie wird unter jeder von Gitile angebotenen Seite angezeigt.

nginx-server-block

Ein Server-Block für NGinx. NGinx wird durch Gitile erweitert und als inverser Proxy („Reverse Proxy“) verwendet, um dessen Seiten anzubieten, und es wird als einfacher Web-Server verwendet, um statische Dateien und Grafiken anzubieten.

Über diesen Block können Sie weitere eigene URLs auf Ihrer Domain anbieten lassen wie z.B. eine /git/-URL zum „anonymen“ Klonen ohne Anmeldung oder sonstige Dateien, die Sie anbieten möchten.


Fußnoten

(35)

Das geschieht, indem die magische Datei git-daemon-export-ok im Repository erzeugt wird.

(36)

Führen Sie man git-daemon aus, um weitere Informationen zu erhalten.


Nächste: Spieldienste, Vorige: Virtualisierungsdienste, Nach oben: Dienste   [Inhalt][Index]