2009-09-09 10 views
6

Vedo il comando "tirare" e mi chiedo come sia diverso da un "clone". Entrambi i termini sembrano implicare il recupero del codice da qualche repository remoto. C'è qualche sottile distinzione qui?È 'pull' un sinonimo di 'clone' in un repository Mercurial di controllo del codice sorgente?

+1

Dal momento che ti sembra di essere solo agli inizi con Mercurial, probabilmente si dovrebbe leggere attraverso questa domanda Stack Overflow: http://stackoverflow.com/questions/1170338/mercurial-for-beginners-the-definitive-practical-guide È dovrebbe anche leggere e/o lavorare attraverso i primi capitoli di "Mercurial: The Definitive Guide": http://hgbook.red-bean.com/read/ Infine, potresti voler creare un progetto giocattolo su http: // bitbucket.org/ per ottenere un po 'di pratica lavorando con Mercurial. – las3rjock

+0

Ottimi collegamenti. Molto utile. Grazie. – tent

+0

http://hginit.com/ fornisce anche un eccellente tutorial. Ho tutti i miei nuovi impiegati e stagisti che lavorano attraverso di esso quando si uniscono al mio team. – JSmitty

risposta

11

hg clone è come si crea una copia locale di un repository remoto. L'equivalente di Subversion è svn checkout.

hg pull estrae le modifiche da un altro repository. hg update applica tali modifiche al repository locale. hg pull -u equivale a hg pull; hg update. The Subversion equivalente a hg pull -u è svn update.

19

Utilizzare clone quando è necessario creare un nuovo repository basato su un altro. Utilizzare pull in seguito per trasferire nuovi changeset nel clone. Non è possibile utilizzare clone per recuperare solo i nuovi changeset - questo è ciò che pull è per. Il comando pull confronta i due repository, trova i changeset mancanti nel tuo repository e infine li trasferisce.

Tuttavia, hai ragione che ci sono delle somiglianze tra clone e pull: entrambi trasferiscono la cronologia tra i repository. Se si clona prima

hg clone https://www.mercurial-scm.org/repo/hg/ 

allora questo ha lo stesso effetto esatto come fare

hg init hg 
cd hg 
hg pull https://www.mercurial-scm.org/repo/hg/ 
hg update 

si ottiene la stessa identica storia in entrambi i casi. Il comando clone è più conveniente, però, dal momento che edita anche il file .hg/hgrc per voi di impostare il percorso predefinito:

[paths] 
default = https://www.mercurial-scm.org/repo/hg/ 

Questo è quello che ti permette di fare hg pull nel repository senza specificare un URL. Un altro vantaggio dell'utilizzo di clone è quando si lavora con repository sullo stesso disco: hg clone a b sarà molto veloce ed economico in termini di spazio su disco poiché b condividerà la cronologia con a. Questo viene fatto usando i collegamenti fisici e funziona su tutte le piattaforme (Windows, Linux, Mac).

2

clone crea un nuovo repository come una copia di un repository esistente.

importazioni tirare tutti i changeset (non già presente) da altri repository in un repository esistenti.

Problemi correlati