2009-09-09 13 views
6

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?

+1

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

+0

Große Links. Sehr hilfreich. Vielen Dank. – tent

+0

http://hginit.com/ bietet auch ein hervorragendes Tutorial. Ich habe alle meine neuen Mitarbeiter und Praktikanten, wenn sie sich meinem Team anschließen. – JSmitty

Antwort

11

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.

19

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).

2

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.