Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Die Anleitung beschreibt das Anbinden eines Mercurial Repositories für den Apache2-Webserver. Voraussetzung dafür ist, dass der Apache sowie Mercurial schon installiert sind.
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/ |
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
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 = |
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
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.
sudo -u www-data hg init /var/hg/repos/REPOSITORY_NAME
Apache neu starten:
sudo service apache2 restart
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 |
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 .
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.
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
Diese Revision wurde am 30. August 2015 15:37 von aasche erstellt.