Mercurial: Unterschied zwischen den Versionen

Aus schokokeks.org Wiki
Zur Navigation springen Zur Suche springen
Kratz00 (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
example.org statt ungültiger beispieldomain, beispiel-URLs nicht zu echten links machen
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 29: Zeile 29:
  author = Ihr Name <ihr-name@example.org>
  author = Ihr Name <ihr-name@example.org>


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


In der vorletzten Zeile muss <tt>/path/to/repo</tt> durch den Pfad zum Repository ersetzt werden. Achtung, hier kann nicht <tt>$HOME/hg/repository</tt> eingetragen werden, es muss der komplette absolute Pfad ohne Variablen sein, z. B. <tt>/home/ihr-benutzername/hg/repository</tt>. 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 <tt>index.cgi</tt> könnten zum Beispiel so aussehen:
In der vorletzten Zeile muss <tt>/path/to/repo</tt> durch den Pfad zum Repository ersetzt werden. Achtung, hier kann nicht <tt>$HOME/hg/repository</tt> eingetragen werden, es muss der komplette absolute Pfad ohne Variablen sein, z. B. <tt>/home/ihr-benutzername/hg/repository</tt>. 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 <tt>index.cgi</tt> könnten zum Beispiel so aussehen:
Zeile 61: Zeile 61:
  $HOME/hg/repository/...
  $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):
Nun kann das Repository über <nowiki>https://example.org/hg/</nowiki> betrachtet werden. Ein Klonen ist auch direkt möglich (lokal auf dem Computer, nicht auf dem Server):


  % hg clone http://ihre-domain/hg/ repository
  <nowiki>% hg clone https://example.org/hg/ repository</nowiki>


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


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


Nun können Änderungen am lokalen Repository die auf den Server übertragen werden sollen, einfach mit "push" hochgeladen werden.
Nun können Änderungen am lokalen Repository die auf den Server übertragen werden sollen, einfach mit "push" hochgeladen werden.
Zeile 90: Zeile 90:
Falls das Repository nicht direkt mit clone vom Server erstellt wurde, muss die URL angegeben werden:
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/
  <nowiki>% hg push ssh://ihr-benutzername@schokokeks.org/hg/repository/</nowiki>


Nun sind die Daten aktualisiert und können unter http://ihre-domain/hg/ betrachtet und von anderen geklont werden.
Nun sind die Daten aktualisiert und können unter <nowiki>https://example.org/hg/</nowiki> 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 <tt>repository/.hg/hgrc</tt> (lokal auf dem Computer, nicht auf dem Server)
Falls das dauerhafte angeben der URL zu mühsam ist, oder der Fehler "ssl required" beim "pushen" auftritt, muss die hgrc Datei in <tt>repository/.hg/hgrc</tt> (lokal auf dem Computer, nicht auf dem Server)
Zeile 98: Zeile 98:


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


Dann wird automatisch zu dieser Adresse "gepusht".
Dann wird automatisch zu dieser Adresse "gepusht".

Aktuelle Version vom 10. Februar 2019, 12:32 Uhr

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 https://example.org/hg/ betrachtet werden. Ein Klonen ist auch direkt möglich (lokal auf dem Computer, nicht auf dem Server):

% hg clone https://example.org/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 https://example.org/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".