Ich sehe den Befehl "ziehen" und frage mich, wie sich das von einem "Klon" unterscheidet. Beide Begriffe scheinen Code aus einem Remote-Repository abzurufen. Gibt es hier eine feine Unterscheidung?Ist 'pull' ein Synonym für 'clone' in einem Quellcodeverwaltungs-Repository von Mercurial?
Antwort
hg clone
ist, wie Sie eine lokale Kopie eines Remote-Repository erstellen. Das Subversion-Äquivalent ist svn checkout
.
hg pull
zieht Änderungen aus einem anderen Repository. wendet diese Änderungen auf das lokale Repository an. hg pull -u
entspricht hg pull; hg update
. Das Subversion-Äquivalent zu hg pull -u
ist svn update
.
Verwenden Sie Klon, wenn Sie ein neues Repository basierend auf einem anderen erstellen müssen. Verwenden Sie Pull später, um neue Changesets in den Klon zu übertragen. Sie können Clone nicht verwenden, um nur die neuesten Changesets abzurufen - dafür ist Pull gedacht. Der Befehl pull vergleicht die beiden Repositories, findet die fehlenden Changesets in Ihrem Repository und überträgt diese schließlich.
Sie haben jedoch recht, dass es Ähnlichkeiten zwischen Klonen und Ziehen gibt: Beide übertragen den Verlauf zwischen den Repositories. Wenn Sie zum ersten Mal klonen
hg clone https://www.mercurial-scm.org/repo/hg/
dann hat dies genau die gleiche Wirkung wie tun
hg init hg
cd hg
hg pull https://www.mercurial-scm.org/repo/hg/
hg update
Sie genau die gleiche Geschichte in beiden Fällen erhalten. Der Klon-Befehl ist bequemer, obwohl, da es auch die .hg/hgrc
-Datei für Sie einrichten Pfad Standard-Bearbeitungen:
[paths]
default = https://www.mercurial-scm.org/repo/hg/
Dies ist, was Sie hg pull
im Repository tun können, ohne Angabe einer URL. Ein weiterer Vorteil der Verwendung von Klonen ist, wenn Sie mit Repositories auf dem gleichen Datenträger arbeiten: hg clone a b
wird sehr schnell und billig in Bezug auf Speicherplatz sein, da b
den Verlauf mit a
teilen wird. Dies geschieht über Hardlinks und funktioniert auf allen Plattformen (Windows, Linux, Mac).
Klon erstellt ein neues Repository als Kopie eines vorhandenen Repository.
Pull importiert alle Changesets (nicht bereits vorhanden) von einem anderen Repository in ein vorhandenes Repository.
Da Sie scheinen, gerade mit Mercurial anzufangen, sollten Sie vermutlich diese Stapelüberlauffrage durchlesen: http://stackoverflow.com/questions/1170338/mercurial-for-beginners-the-definitive-practical-guide Sie sollte auch die ersten Kapitel von "Mercurial: The Definitive Guide" lesen und/oder durcharbeiten: http://hgbook.red-bean.com/read/ Schließlich möchten Sie vielleicht ein Spielzeugprojekt auf http: // erstellen. bitbucket.org/, um etwas Übung mit Mercurial zu bekommen. – las3rjock
Große Links. Sehr hilfreich. Vielen Dank. – tent
http://hginit.com/ bietet auch ein hervorragendes Tutorial. Ich habe alle meine neuen Mitarbeiter und Praktikanten, wenn sie sich meinem Team anschließen. – JSmitty