Repository aufsetzen
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Die Anleitung beschreibt das Anbinden eines Mercurial Repositories für den Apache2-Webserver. Voraussetzung dafür ist, dass der Apache sowie Archiv/Mercurial schon installiert sind.
Grundlegende Konfiguration¶
Zunächst öffnet man ein Terminal[1] und erstellt den Speicherort für das Repository[2]:
sudo mkdir -p /var/hg/repos
Anschließend werden die Besitzrechte dem Apache-Benutzer zugewiesen[3]:
sudo chown -R www-data:www-data /var/hg
Als nächstes erstellt man die Konfigurationsdatei:
cat > /tmp/hgweb.config
In der Konfigurationsdatei gibt man nun an, wo sich das Repository befindet.
1 2 | [collections] /var/hg/repos/ = /var/hg/repos/ |
Hinweis:
Der Abschnitt collections
bedeutet in dem Fall, dass mehrere Repositories im selben Verzeichnis liegen. Für eine kleine Anzahl von Repositories benutzt man path
und gibt den Pfad zum Repository an. Siehe dazu Setting up the hgweb.config File 🇬🇧.
Die Konfigurationsdatei muss nun noch an die richtige Stelle verschoben werden.
sudo -u www-data cp /tmp/hgweb.config /var/hg rm /tmp/hgweb.config
Weitere Konfigurationsmöglichkeiten¶
Diese Konfigurationsdatei enthält Einstellungen, die für alle Repositories gelten. Spezifische Einstellungen werden in der hgrc-Datei des jeweiligen Repositories hinterlegt. Siehe dazu Informationen über das Repository.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [web] # Aussehen der Repository Seite # Mögliche Stile: coal, gitweb, monoblue, paper und spartan style = monoblue # Archive die zum Download angeboten werden: gz, bz2, zip allow_archive = gz bz2 # Farbschema der Syntaxhervorhebung # Mögliche Schemas: pygmentize -L style pygments_style = tango [extensions] # Syntaxhervorhebung # Erfordert die Installation von Pygments highlight = |
Anbindung an Webserver¶
Für das Anbinden an den Webserver muss die Datei hgwebdir.cgi (bzw. hgweb.cgi) kopiert und ausführbar gemacht werden.
sudo -u www-data cp /usr/share/doc/mercurial-common/examples/hgwebdir.cgi /var/hg sudo -u www-data chmod +x /var/hg/hgwebdir.cgi
In einem Editor die Datei /etc/apache2/sites-available/hg mit folgenden Inhalt erstellen[3].
1 2 3 4 5 | ScriptAliasMatch ^/hg(.*) /var/hg/hgwebdir.cgi$1 <Directory /var/hg> Options ExecCGI FollowSymLinks AllowOverride None </Directory> |
Der virtuelle Host muss noch aktiviert werden und der Apache seine Konfiguration aktualisieren.
sudo a2ensite hg sudo service apache2 force-reload
Benutzer-Anmeldung¶
Der Apache-Server bietet die Möglichkeit einer Benutzer-Anmeldung über eine Passwort-Datei. Die Benutzer des Mercurial Repositories müssen nicht mit den lokal im System vorhandenen Benutzern übereinstimmen.
sudo htpasswd -c /etc/apache2/hg.passwd BENUTZERNAME
Beispiel:
sudo htpasswd -c /etc/apache2/hg.passwd peter
Weitere Benutzer werden dann ohne die Option -c
angelegt.
sudo htpasswd /etc/apache2/hg.passwd max
Folgende Zeilen müssen in der Datei /etc/apache2/sites-available/hg ergänzt werden.
1 2 3 4 5 6 7 8 9 | <Directory /var/hg> # [...] AuthType Basic AuthName "Mercurial Repository" AuthUserFile /etc/apache2/hg.passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Directory> |
Der Nutzer muss dann noch für das pushen freigeschaltet werden.
Neues Repository erzeugen¶
sudo -u www-data hg init /var/hg/repos/REPOSITORY_NAME
Apache neu starten:
sudo service apache2 restart
Push mit Authentifizierung¶
Um einzelnen Nutzern das Schreibrecht zu geben oder zu nehmen, können in der Datei /var/hg/repos/REPOSITORY_NAME/.hg/hgrc folgende Einträge verwendet werden:
1 2 | [web] allow_push = peter, max |
Allen das Pushen erlauben:
1 2 | [web] allow_push = * |
Einzelne Nutzer ausschließen:
1 2 | [web] deny_push = ulli |
Informationen über das Repository¶
Um Informationen über ein Repository zu hinterlegen, öffnet man folgende Datei in einem Editor /var/hg/repos/REPOSITORY_NAME/.hg/hgrc
1 2 3 4 | [web] contact = Max Mustermann # selbsterklärend. Nur reiner Text erlaubt. description = Ganz <b>Toll</b>! # Beschreibung. HTML Elemente sind erlaubt. allow_archive = gz, zip, bz2 # ermöglicht den Download als Archiv |
Weitere Einstellmöglichkeiten findet man auf der Webseite 🇬🇧.
Hinweis:
Hierbei handelt es sich um spezifische Einstellungen für das jeweilige Repository. Allgemeine Einstellungen die für alle Repositories gelten sollen werden in der hgweb.config hinterlegt.
Repository verwenden¶
Das Repository kann nun wie folgt verwendet werden:
hg clone http://mydomain.org/hg/REPOSITORY_NAME
Wenn man den lokalen Ordner anders benennen möchte, benutzt man folgenden Befehl:
hg clone http://mydomain.org/hg/REPOSITORY_NAME LOKALER_NAME
Problembehebung¶
Probleme mit SSL¶
Falls es mit dem Pushen über SSL nicht klappen sollte, kann man die SSL-Funktion auch ausschalten.
1 2 | [web] push_ssl = false |
Links¶