staging.inyokaproject.org

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.

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

Diese Revision wurde am 7. Februar 2020 17:22 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server, Versionsverwaltung, Apache