Verteilte Versionsverwaltung mit Mercurial

Gespeichert von Erik Wegner am/um Do, 01.04.2010 - 22:27
Body

Konfiguration

Der Befehl hg help config gibt die Liste der Dateien aus, die Mercurial als Konfigurationsdateien akzeptiert. Darin kann folgende Grundkonfiguration eingetragen werden:

[ui]
username = Erik Wegner <user@example.com>
#verbose = True
#ssh = TortoisePlink.exe

[extensions]
graphlog=
hgext.extdiff = 
fetch=

Beginn

Das Projektrepository liegt im jeweiligen Pfad im Unterorder .hg. Um die Arbeit zu beginnen, reicht der Befehl hg init im Verzeichnis der Arbeitskopie.

Grundsätzliche Befehle

Folgende Kommandos dienen der grundsätzlichen Arbeit mit Dateien im Repository:

hg add file1Fügt file1 zum Repository hinzu
hg rm file1Löscht file1 aus dem Repository und Projektpfad
hg addremoveSucht alle neuen oder gelöschten Dateien und speichert die entsprechenden Änderungen
hg statusGibt alle geänderten und nicht versionierten Dateien aus
hg forget file1Nimmt das Hinzufügen von file1 zum Repository zurück

Dateiänderungen betrachten

hg identify -nZeigt die lokale Revisionsnummer
hg upAktualisiert das Projektverzeichnis, übernimmt alle Änderungen aus dem Repository
hg tag -r 2 my-version-tag-nameErzeugt einen Tag für Revision 2
hg grep [-all] [-f] MUSTER DATEISucht das MUSTER in der DATEI, gibt alle passenden Revisionen aus und folgt Dateiumbenennungen
hg glog file1Gibt eine grafische Darstellung der Dateihistorie aus, benötigt die Erweiterung graphlog (siehe oben)
hg rollback && hg up -CNimmt alle lokalen Änderungen zurück. VORSICHT!

Verzweigen und Zusammenführen

hg headsZeigt alle Zweige
hg mergeFührt die Arbeitskopie mit einem Zweig zusammen
hg branch BRANCHNAME && hg ci -m"Branch created"Erzeugt einen Zweig
hg branchesZeigt alle (aktiven) Zweige
hg up defaultWechselt zum Hauptentwicklungszweig
hg up BRANCHNAMEWechselt zum Entwicklungszweig BRANCHNAME
hg branchGibt den Namen des Entwicklungszweigs aus
hg ci --close-branch -m"Branch closed"Schließt den Entwicklungszweig (Status wird inaktiv)

Verteilung

hg clone src-repo clone-repo-verzeichnisErzeugt im Verzeichnis clone-repo-verzeichnis eine Kopie des Repositories
hg incomingPrüft auf Revisionen, die geholt werden können
hg pullLädt die Revisionsänderungen in die lokale Revisionsgeschichte
hg headsGibt aus, ob ein Zusammenführen notwendig ist, wenn es mehrere Entwicklungszweige gibt
hg mergeFührt zwei Entwicklungszweige zusammen
hg ci -m"Merged user x changes"Überträgt die durchgeführte Zusammenführung in das Repository
hg pushÜberträgt das Repository in ein entferntes Repository
hg outgoingGibt die Repository-Änderungen aus, die gesendet werden können
hg upAktualisiert die Arbeitskopie mit den Änderungen aus dem Repository, wenn es nur einen Entwicklungszweig gibt

Zwei Repositories abgleichen

Wenn zwei Entwickler ihre Änderungen austauschen, bietet Mecurial eine interessante Methode, dies in einem lokalen Netzwerk mit Hilfe des integrierten Webservers zu tun. Die folgenden Schritte beschreiben die zwei Systeme als linke und rechte Seite des Abgleichs.

Methode a: Laden der Änderungen

Die linke Seite startet den integrierten Webserver: hg serve. Dabei wird die IP-Adresse oder der Hostname des Systems ausgegeben, von dem die Änderungen geladen werden können.

Die rechte Seite holt nun die Änderungen vom linken System ab:

hg pull http://linke_seite:8000/
hg up

Methode b: Schreiben der Änderungen

Der integrierten Webserver gestattet in der Grundkonfiguration kein Schreiben von Änderungen, um dies zu erlauben, müssen dei folgenden Zeilen in die hgrc des Repository aufgenommen werden:

[web]
push_ssl = false
allow_push = *

Anschließend kann der Webserver gestartet werden: hg serve. Dabei wird die IP-Adresse oder der Hostname des Systems ausgegeben, von dem die Änderungen geladen werden können.

Die rechte Seite kann nun die Änderungen in das linken System schreiben:

hg push http://linke_seite:8000/

Erleichterung mit Zeroconf

Wird die Erweiterung zeroconf geladen, wird wie in Methode a beschrieben der Webserver der linken Seite gestartet. Anschließend kann die rechte Seite das Repository mittels hg paths aufspüren.

Erweiterungen

KurznameZweckWeitere Informatione, Homepage
FixUTF8UTF8-Dateinamen unter WindowsFixUtf8 Extension