Non esattamente.
hg pull
afferra le revisioni dall'altro repository e li aggiunge alle revisioni disponibili localmente nel vostro clone del repository, ma non aggiornare la propria copia di lavoro - solo il tuo repository (che, per DCVS come hg/git/etc non è la stessa cosa di una copia di lavoro).
hg update
aggiorna la tua copia di lavoro effettiva all'ultima revisione nel tuo repository locale.
Questo differisce da Subversion perché in svn non esiste il "repository locale", l'unico repository è quello sul server; hai solo una copia funzionante a livello locale. Quindi, perché update
è solo un singolo comando, al contrario di Mercurial pull
e quindi update
.
L'equivalente di svn update
per Mercurial sarebbe hg pull --update
, che equivale a fare hg pull
e poi hg update
uno dopo l'altro.
Un flusso di lavoro end-to-end per DCVS con un pronti contro termine "centrale" sembra qualcosa di simile:
- Un fa
hg commit
su alcune modifiche.
- A fa
hg push
per inviarli al repository centrale.
- B fa
hg pull
per estrarli dal repository centrale nel proprio clone.
- B fa
hg update
per aggiornare la loro copia di lavoro per riflettere le modifiche apportate al clone.
Nei sistemi senza un repo centrale, sarebbe invece simile a questa:
- Un fa
hg commit
su alcune modifiche.
- B, che ha clonato il repository di A, desidera tali modifiche, e quindi fa un
hg pull
direttamente dal repository di A.
- B utilizza
hg update
per aggiornare la propria copia di lavoro alle modifiche.
Inoltre, l'equivalente a svn revert
è hg revert
. :)
Questa è un'ottima risposta. Non prova solo a spiegare hg. Cerca davvero di spiegarlo in confronto a svn, che ho specificamente chiesto nella mia domanda. Non spiega solo le differenze, che altri hanno fortemente sottolineato, spiega le somiglianze. Questa risposta cerca anche di coprire tutti i comandi hg correlati di cui sono confuso e non si concentra in modo specifico su hg pull --rebase. – allyourcode
L'unica domanda di follow-up che ho avuto è stata questa: sembra che l'aggiornamento di hg sarebbe utile solo se non hai mai commesso alcun commit (come nel caso 1), perché dopo, lavorerai su un ramo che nessuno altro lo sa. Di nuovo, questo presuppone un flusso di lavoro che coinvolge un repo centrale benedetto che i membri di una squadra spingono e tirano da. – allyourcode
@allyourcode Se si dispone di modifiche locali, sì, è necessario unire anziché aggiornare. Tuttavia, l'aggiornamento è anche il modo in cui si cambiano le revisioni o i rami con nome ed è utile una volta che le modifiche vengono inviate a monte. Se è necessario unire e provare ad aggiornare, l'aggiornamento avrà esito negativo, quindi di solito uso prima l'aggiornamento e unisco se fallisce. –