Inspiriert von Git für Anfänger: Der endgültige praktische Leitfaden .
Dies ist eine Zusammenstellung von Informationen zur Verwendung von Mercurial für Anfänger für den praktischen Gebrauch.
Anfänger - ein Programmierer, der die Quellcodeverwaltung berührt hat, ohne sie sehr gut zu verstehen.
Praktisch - für Situationen, auf die die meisten Benutzer häufig stoßen - Erstellen eines Repositorys, Verzweigen, Zusammenführen, Ziehen / Verschieben von / zu einem Remote-Repository usw.
Anmerkungen :
- Erklären Sie, wie etwas erledigt werden kann, anstatt wie etwas implementiert wird.
- Beschäftige dich mit einer Frage pro Antwort.
- Antworte klar und so präzise wie möglich.
- Bearbeiten / erweitern Sie eine vorhandene Antwort, anstatt eine neue Antwort zum selben Thema zu erstellen.
- Bitte geben Sie einen Link zum Mercurial-Wiki oder zum HG-Buch für Personen an, die mehr erfahren möchten.
Fragen:
Installation / Einrichtung
- Wie installiere ich Mercurial?
- Wie richte ich Mercurial ein?
- Wie erstellen Sie ein neues Projekt / Repository?
- Wie konfiguriere ich es, um Dateien zu ignorieren?
Mit dem Code arbeiten
- Wie bekommt man den neuesten Code?
- Wie checkt man Code aus?
- Wie legen Sie Änderungen fest?
- Wie sehen Sie, was nicht festgeschrieben ist oder welchen Status Ihre aktuelle Codebasis hat?
- Wie entferne ich Dateien aus dem Repository?
- Wie zerstören Sie unerwünschte Commits?
- Wie vergleichen Sie zwei Revisionen einer Datei oder Ihre aktuelle Datei und eine vorherige Revision?
- Wie sehen Sie den Verlauf von Revisionen einer Datei oder eines Repositorys?
- Wie gehen Sie mit Binärdateien um (z. B. Visio-Dokumente oder Compiler-Umgebungen)?
- Wie füge ich gleichzeitig "geänderte" Dateien zusammen?
- Wie kann ein Änderungssatz zurückgesetzt werden?
- Wie kehren Sie zu einer früheren Version des Codes zurück?
- Wie extrahiert man einen Patch aus einem bestimmten Änderungssatz?
- Wie können Sie aufzeichnen, dass Sie eine Datei umbenannt oder gelöscht haben, ohne den Befehl Mercurial zu verwenden?
Tagging, Verzweigung, Releases, Baselines
- Wie können Sie einen bestimmten Satz von Revisionen für einen bestimmten Satz von Dateien markieren, freigeben oder freigeben, damit Sie diesen später jederzeit abrufen können?
- Wie zieht man eine bestimmte "Veröffentlichung"?
- Wie verzweigen Sie?
- Wie verschmelzen Sie Zweige?
- Wie verschmelzen Sie Teile eines Zweigs mit einem anderen Zweig?
Andere
- Gutes GUI / IDE Plugin für Mercurial? Vorteile Nachteile?
- Gibt es noch andere häufige Aufgaben, die ein Anfänger kennen sollte?
- Wie kann ich mit Subversion kommunizieren?
hg add
Mercurial Dateien nachverfolgt , wenn Sie sie manuell ignorieren. Zum Beispiel, wenn Sie eine Reihe von Dateien , wie habendeploy-test.conf
,deploy-production.conf
etc und wollen nicht auf die Version sie (sie könnten Passwörter in ihnen haben) , aber sie tun möchten Versiondeploy-template.conf
Sie einfach ignorieren könnendeploy*
und manuell hinzufügendeploy-templace.conf
.Wie sehen Sie, was nicht festgeschrieben ist oder welchen Status Ihre aktuelle Codebasis hat?
So zeigen Sie eine Liste der geänderten Dateien an:
Dadurch wird jede geänderte Datei zusammen mit ihrem Status gedruckt. Dies kann Folgendes umfassen:
M
- Geändert. Die Datei wurde geändert und die Änderungen wurden nicht festgeschrieben.A
- Hinzugefügt. Die Datei wurde zuvor noch nicht verfolgt. Wenn Sie jedoch ein Commit ausführen, beginnt Mercurial mit der Verfolgung.R
- Entfernt. Die Datei wurde zuvor nachverfolgt. Wenn Sie jedoch ein Commit ausführen, wird Mercurial das Tracking in diesem und zukünftigen Commits einstellen.?
- Unbekannt. Die Datei wird derzeit nicht von Mercurial verfolgt. Das Festschreiben hat keine Auswirkung darauf, es sei denn, Siehg add
fügen es hinzu.!
- Vermisst. Die Datei wurde verfolgt, aber Mercurial kann sie in der Arbeitskopie nicht finden.So zeigen Sie die Änderungen an, die tatsächlich an den Dateien vorgenommen wurden:
quelle
Wie erstellen Sie ein neues Projekt / Repository?
quelle
Wie kann ich mit Subversion kommunizieren?
Es gibt drei Möglichkeiten:
Die Konvertierungserweiterung klont ein vorhandenes Subversion-Repository in ein Mercurial-Repository. Es kommt mit Mercurial. Es funktioniert ungefähr so:
Dies greift beispielsweise nach dem Trunk des zwischengespeicherten SixApart-Repositorys.
Die Erweiterung kann schrittweise neue Revisionen aus einem Subversion-Repository in das Mercurial-Repository einfügen (ein bisschen wie Pull). Es wird jedoch nicht unterstützt, Mercurial-Revisionen zu übernehmen und an Subversion zurückzusenden (kein Push). [XXX: Korrigieren Sie dies, wenn es falsch ist] .
Die hgsubversion-Erweiterung . Es ist in vielerlei Hinsicht die fortschrittlichste Lösung, da es die Subversion-API verwendet, um mit dem Subversion-Repository zu kommunizieren. Es soll die hg-svn-Brücke werden. Es ermöglicht das vollständige Auslösen von Revisionen (vollständiges Klonen, Ziehen und Drücken). Zum jetzigen Zeitpunkt [XXX: Ändern Sie dies, wenn / wenn es falsch wird] befindet es sich jedoch noch in der Entwicklung und es gibt noch keine offiziellen Veröffentlichungen. Infolgedessen funktioniert es nur mit dem aktuellsten Mercurial (1.3 zum jetzigen Zeitpunkt).
tags/
, um sie von gleichnamigen Zweigen zu unterscheiden).closed-branches
zum Schließen von Zweigen, die in Subversion entfernt werden.hg svn <subcommand>
zielt normalerweise darauf ab, so weit integriert zu werden, dass Sie den 'svn'-Teil nicht mehr benötigen (dh er möchte einen Subversion-Klon so weit wie möglich wie jedes andere Mercurial-Repository behandeln).;Es funktioniert so:
Klon:
ODER (nur für
svn://
URLs)ziehen:
drücken:
eingehend:
ausgehend:
Auschecken eines gesamten Repositorys:
Das hgsvn Dienstprogramm ( bitbucket Baum ). Bis vor kurzem konnten Sie damit nur ein Subversion-Repository klonen und abrufen, aber ab
hgsvn 0.1.7
diesem Zeitpunkt wird Push unterstützt. [Ich weiß nicht, wie gut es pusht. Jeder mit mehr Erfahrung sollte dies aktualisieren.] Es hat die folgenden bemerkenswerten Funktionen:branches/some-feature
wäre wiehg branch some-feature
. Der Trunktrunk
wird aktiviert (dh es befindet sich nichts im Mercurial-Standardzweig, es sei denn, der Benutzer wechselt explizit zu diesem.)Es funktioniert so:
Klon:
ziehen:
drücken:
eingehend:
ausgehend:
Auschecken eines gesamten Repositorys:
Nur den Kofferraum auschecken:
quelle
hg convert
und es dauert wirklich lange, wenn Sie ein SVN-Repository mit vielen Commits haben. Das Einrichten eines lokalen Repositorys mitsvnsync
hilft sehr, die Dinge zu beschleunigen - insbesondere, wenn Sie dies mehrmals tun müssen, weil Sie in Ihrem Konvertierungsbefehl einige falsche Optionen hatten.svnsync
muss auf die tatsächlichen Dateien des Repositorys zugegriffen werden, nicht nur auf die URL.Wie vergleichen Sie zwei Revisionen einer Datei oder Ihre aktuelle Datei und eine vorherige Revision?
Beide verwenden
hg diff
. Beihg diff
Verwendung werden alle Änderungen in der Arbeitskopie und im Tipp (das letzte Commit) angezeigt.Für "Wie vergleichen Sie zwei Revisionen einer Datei?"
Der obige Befehl zeigt Unterschiede zwischen rev1 und rev2 von "file.code".
Für "Wie vergleichen Sie Ihre aktuelle Datei mit einer früheren Revision?"
Der obige Befehl unterscheidet sich zwischen der aktuellen Version von "file.code" und der letzten Revision (der zuletzt festgeschriebenen).
: D.
quelle
Wie können Sie einen bestimmten Satz von Revisionen für einen bestimmten Satz von Dateien markieren, freigeben oder freigeben, damit Sie diesen später jederzeit abrufen können?
Sie können Ihr Repository auch klonen, um ein spezielles Tag- Repository zu erstellen .
quelle
hg tag my-tag
?Wie verzweigen Sie?
$ hg branch my-branch
oder
$ hg klone original-repository my-branch
Es sollte jedoch beachtet werden, dass der Zweig ein "virtuelles" Verzeichnis erstellt (dh die Dateien bleiben gleich, aber hg behandelt sie so, als wären sie innerhalb des Systems unterschiedlich), während der Klon eine tatsächliche, vollständige Kopie erstellt. Genau genommen verzweigt sich der Klon nicht.
quelle
hg branch my-branch
Gutes GUI / IDE Plugin für Mercurial?
GUI
Plugins
quelle
Wie legen Sie Änderungen fest?
Rufen Sie diesen Befehl aus dem aktuellen lokalen * mercurial-Repository auf
Aliase: ci
Wo Option sein kann:
Ein Beispielbefehl wäre:
ANMERKUNGEN :
quelle
Wie richte ich Mercurial ein?
Mercurial speichert seine Konfigurationsinformationen
~/.hgrc
auf * nix-Systemen und%UserProfile%\mercurial.ini
auf Windows-Systemen. (%UserProfile%
Ist normalerweise"C:\Documents and Settings\[username]\"
auf Windows 2000- oder Windows XP-Systemen und normalerweiseC:\Users\[username]\
auf Windows Vista- und Windows 7-Systemen.)Als Ausgangspunkt sollten Sie Ihren Mercurial-Benutzernamen festlegen, indem Sie Folgendes in Ihr
.hgrc
oder einfügenmercurial.ini
:TortoiseHg-Benutzer auf Windows-Systemen können alternativ ausgeführt werden
hgtk userconfig
Siehe auch " Erstellen einer Mercurial-Konfigurationsdatei " in Kapitel 2 von " Mercurial: The Definitive Guide ".
quelle
Wie verschmelzen Sie Zweige?
quelle
Wie installiere ich Mercurial?
Bitte bearbeiten Sie es gut, wenn Sie es unter Linux von der Quelle installiert oder die Windows-Installationsprogramme verwendet haben.
Mac OS X 10.4 (Tiger), 10.5 (Leopard)
Verwenden Sie Pythons easy_install (mit Setuptools ):
Dies findet die neueste Version (1.3.1 zum Zeitpunkt des Schreibens) und wird installiert unter:
Mit Python 2.6 umgeht dies auch das Mercurial OS X-Installationspaket (Stand 1.2.1, Stand 26. Juli 2009) und beschwert sich, dass Python 2.5 benötigt wird. Aus der Dokumentation geht hervor , dass Fink und Macports Version 1.2 installieren.
Linux
Die meisten expliziten Linux-Pakete scheinen hinter der aktuellen Version zurückzubleiben. Verwenden Sie also easy_install (wie oben) oder laden Sie den Mercurial-Tarball herunter , extrahieren Sie das Archiv, wechseln Sie in das mercurial-Verzeichnis und führen Sie Folgendes aus:
(aus Einführung von Mercurial, einem verteilten Versionskontrollsystem )
Windows
Es gibt ein Binärpaket der neuesten Version von Mercurial . TortoiseHg ist eine Windows-Shell-Erweiterung für Mercurial und installiert Mercurial. Cygwin kann auch Mercurial installieren.
Alternativ (Anweisungen zu lang, daher hier verlinkt) können Sie eine optimierte oder reine Python- Version von Mercurial aus dem Quellcode erstellen .
quelle
Wie bekommt man den neuesten Code?
Mercurial merkt sich, woher ein Repository geklont wurde (in .hg / hgrc), sodass Sie einfach Folgendes ausführen können:
um den neuesten Code aus dem Ursprungs-Repository zu ziehen. (Dadurch wird das Arbeitsverzeichnis nicht aktualisiert.)
um das Arbeitsverzeichnis zu aktualisieren.
um gleichzeitig einen Pull und ein Update durchzuführen.
quelle
.hg/hgrc
wenn Sie einen Klon erstellen, sodass Sie ihn beim Ziehen / Drücken nicht angeben müssen. Sie können dem[paths]
Abschnitt in weitere Pfade hinzufügen,.hg/hgrc
wenn Sie möchten.Wie checkt man Code aus?
Wo Option sein kann:
Dabei ist Quelle die Quelle der Originaldateien im Repository, wobei es sich um eine Remote- URL oder ein Dateisystemverzeichnis handeln kann. Beispielsweise:
Am Zielort befindet sich der Quellcode in Ihrem lokalen Dateisystem.
quelle
Wie legen Sie Änderungen fest?
quelle
Wie sehen Sie, welche Änderungen beim Push an das Upstream-Repository gesendet werden?
Verwenden Sie
hg outgoing
diese Option, um die Liste der Änderungssätze abzurufen, die auf das Standard-Repository festgelegt werden:Verwenden Sie
-p
(--patch
), um die tatsächlichen Codeänderungen abzurufen . Dadurch wird jeder Änderungssatz vollständig ausgegeben:quelle
Wie entferne ich eine Datei aus dem Repository?
So entfernen Sie eine Datei aus dem Repository und lassen sie beim nächsten Commit löschen:
So entfernen Sie eine Datei aus dem Repository, lassen sie jedoch nicht löschen
oder aus Mercurial 1.3
quelle
Wie kehren Sie zu einer früheren Version des Codes zurück?
Aus dieser Frage
@van: Wenn Sie später ein Commit durchführen, erstellen Sie effektiv einen neuen Zweig. Dann können Sie möglicherweise nur an diesem Zweig weiterarbeiten oder den vorhandenen Zweig zusammenführen.
quelle
Wie kann ein Änderungssatz zurückgesetzt werden?
Einige Optionen verfügbar
Easy Way (Zurücksetzen eines einzelnen Änderungssatzes)
Hard Way (manuell unterscheiden und anwenden)
Schritt 1 : Erstellen Sie eine Patch-Datei, um die Änderungen zwischen Version 107 und 108 rückgängig zu machen:
(alternativ macht hg diff -r108 -r107 ohne --reverse dasselbe)
Schritt 2 : Wenden Sie die Patch-Datei an:
Einige der Unterschiede können möglicherweise nicht zutreffen, zum Beispiel:
Die .rej-Datei enthält den Inhalt des Diff, der nicht angewendet werden konnte. Sie müssen einen Blick darauf werfen.
quelle
hg backout
ist?Wie sehen Sie den Verlauf von Revisionen einer Datei oder eines Repositorys?
Anzeigen des Versionsverlaufs des gesamten Repositorys oder der gesamten Dateien
oder
Und um die Liste in umgekehrter Reihenfolge zu sehen
quelle
Wie verschmelzen Sie Teile eines Zweigs mit einem anderen Zweig?
Aktivieren Sie die Transplantationserweiterung in Ihrer .hg / hgrc
Laden Sie den Zielzweig und transplantieren Sie die Zielrevision.
Beispiel: Cherry Pick Revision 81 vom Zweig 'foo' in den aktuellen Zweig
quelle
graft
Befehl verwenden, um dasselbe zu tun.hg help graft
Für weitere InformationenWie extrahiert man einen Patch aus einem bestimmten Änderungssatz?
Sie können dies dann in einen anderen Zweig importieren mit:
quelle