ubuntuusers.de

Mercurial Repository aufsetzen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

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 Webserver sowie 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.

[collections]
/var/hg/repos/ = /var/hg/repos/
^D

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 {en}.

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.

[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 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].

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.

# Allgemein
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.

<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:

[web]
allow_push = peter, max

Allen das Pushen erlauben:

[web]
allow_push = *

Einzelne Nutzer ausschließen:

[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

[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 {en}.

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> 

Probleme mit SSL

Falls es mit dem Pushen über SSL nicht klappen sollte, kann man die SSL-Funktion auch ausschalten.

[web]
push_ssl = false

Diese Revision wurde am 24. März 2012 23:48 von ubot erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Versionskontrolle, Server, Programmierung

Passwort vergessen?