Mercurial

Aus schokokeks.org Wiki
Wechseln zu: Navigation, Suche

Mercurial ist ein Versionierungsprogramm ähnlich wie Git. Es ist standardmäßig installiert und kann über hg aufgerufen werden. Mehr Information zu Mercurial findet man im Mercurial Wiki: QuickStart (englisch).


Veröffentlichung auf einer Homepage

Ein Repository auf dem Server kann über ein CGI-Skript veröffentlicht werden, so das jeder Besucher mit seinem Browser das Repository anzeigen kann, die Logs lesen kann, das Repository clonen kann, etc.

Folgend nun eine kurze Installationsanleitung für schokokeks.org, für genauere Informationen steht das Mercurial Wiki zur Verfügung: CGIinstall (englisch).

Die folgende Verzeichnisstruktur wird angenommen, sie kann natürlich angepasst werden. Alle folgenden Befehle finden, soweit nicht anders angegeben, auf dem schokokeks.org Server statt.

$HOME/htdocs/        <- über Browser zugänglich
$HOME/htdocs/hg/     <- hier wird Mercurial zugänglich sein

$HOME/hg/            <- Mercurial Repositories werden hier gespeichert
$HOME/hg/repository/ <- Test Repository

Zuerst muss das Repository erstellt werden.

% cd $HOME/hg/repository
% hg init

Ein schon vorhandenes Repository kann natürlich einfach nach $HOME/hg/repository kopiert werden.

Es sollte eine hgrc Datei in $HOME/hg/repository/.hg/hgrc mit folgendem Inhalt erstellt werden (die Daten natürlich anpassen):

[web]
description = Eine kurze Beschreibung des Repository.
author = Ihr Name <ihr-name@example.org>

Nun muss das CGI-Skript herunter geladen werden. Die Datei ist auf dem offiziellen Mercurial Server zugänglich: http://selenic.com/hg/raw-file/tip/hgweb.cgi Sie muss unter $HOME/htdocs/hg/index.cgi gespeichert werden und die folgenden Änderungen müssen an ihr vorgenommen werden:

In der vorletzten Zeile muss /path/to/repo durch den Pfad zum Repository ersetzt werden. Achtung, hier kann nicht $HOME/hg/repository eingetragen werden, es muss der komplette absolute Pfad ohne Variablen sein, z. B. /home/ihr-benutzername/hg/repository. Ebenfalls in der vorletzten Zeile muss "repository name" durch den gewünschten Repositorynamen ersetzt werden, dieser wird dann im Browser angezeigt. Die letzten beiden Zeilen von index.cgi könnten zum Beispiel so aussehen:

application = hgweb("/home/ihr-benutzername/hg/repository", "Test Repository")
wsgicgi.launch(application)

index.cgi muss ausführbar sein:

chmod a+x index.cgi

Ebenfalls muss eine .htaccess Datei in $HOME/htdocs/hg/.htaccess mit dem folgenden Inhalt erstellt werden, damit das CGI-Skript ausgeführt wird.

# Anfragen an dieses Verzeichnis werden auf index.cgi umgeleitet, genauso
# wie sie normalerweise auf index.html oder index.php umgeleitet werden.
DirectoryIndex index.cgi

# CGI Skripte erlauben.
Options FollowSymlinks ExecCGI

Die fertige Dateistruktur sieht nun so aus (... sind Dateien des Repository):

$HOME/htdocs/
$HOME/htdocs/hg/
$HOME/htdocs/hg/.htaccess
$HOME/htdocs/hg/index.cgi
$HOME/hg/
$HOME/hg/repository/
$HOME/hg/repository/.hg
$HOME/hg/repository/.hg/hgrc
$HOME/hg/repository/...

Nun kann das Repository über http://ihre-domain/hg/ betrachtet werden. Ein Klonen ist auch direkt möglich (lokal auf dem Computer, nicht auf dem Server):

% hg clone http://ihre-domain/hg/ repository

Wenn auf dem Server neue Änderungen liegen, kann das lokale Repository (mit clone erstellt) mit "pull" aktualisiert werden (ebenfalls nicht auf dem Server).

% cd repository
% hg pull


Zugriff auf das Repository mit SSH

Mercurial ermöglicht es Änderungen über SSH lokal von einem Computer aus an das Repository zu übertragen ("pushen"). Dazu muss SSH korrekt konfiguriert sein und das anmelden bei schokekeks.org muss funktionieren; mehr Informationen dazu unter Key-Login (OpenSSH).

Im folgenden wird die gleiche Verzeichnisstruktur wie oben angenommen. Für weitere Informationen dient ebenfalls wieder das Mercurial Wiki: SharedSSH (englisch).

Die folgenden Befehle finden alle lokal auf dem Computer statt, nicht auf dem Server.

Zuerst muss das Repository geklont werden:

% hg clone ssh://ihr-benutzername@schokokeks.org/hg/repository/

Nun können Änderungen am lokalen Repository die auf den Server übertragen werden sollen, einfach mit "push" hochgeladen werden.

% cd repository
% hg push

Falls das Repository nicht direkt mit clone vom Server erstellt wurde, muss die URL angegeben werden:

% hg push ssh://ihr-benutzername@schokokeks.org/hg/repository/

Nun sind die Daten aktualisiert und können unter http://ihre-domain/hg/ betrachtet und von anderen geklont werden.

Falls das dauerhafte angeben der URL zu mühsam ist, oder der Fehler "ssl required" beim "pushen" auftritt, muss die hgrc Datei in repository/.hg/hgrc (lokal auf dem Computer, nicht auf dem Server) bearbeitet werden. Dort einfach die folgenden Zeilen bearbeiten (natürlich anpassen):

[paths]
default = ssh://ihr-benutzername@schokokeks.org/hg/repository/

Dann wird automatisch zu dieser Adresse "gepusht".