2009-08-21 18 views
30

Come posso esaminare un changeset in mercurial senza cercare il suo genitore? In Mercurial, ciò che è l'equivalente diEsaminare un changeset in HG

git show HEAD^ 

Git-spettacolo dà i metadati di modifiche e il diff pure.

risposta

55

La domanda ha due parti. In primo luogo, come ottenere i metadati e diff per un changeset tutti in una volta:

hg log --patch --rev tip 

Si può accorciare le opzioni:

hg log -pr tip 

La seconda parte della domanda è come dire "il changeset genitore di X "senza cercarlo. Per questo è possibile utilizzare il numero parentrevspec extension Martin menzionato.

Dopo aver abilitato l'estensione si può fare:

hg log -pr tip^ 

si potrebbe aggiungere un alias al file ~/.hgrc se non si vuole riqualificare le dita dal comando di git:

[alias] 
show = log -pr 

Quindi è possibile utilizzare:

+2

Senza parentrevspec, poteva semplicemente fare "-r -2" per ottenere il changeset prima della mancia, giusto? –

+2

Sì, è vero. Questo però non funziona per qualcosa come "hg show mytag ^", giusto? –

+2

In generale, per questo caso, "hg export" è preferito (elenca il messaggio di commit completo, ecc.). – tonfa

12

Penso che tu voglia hg export cset.

2

Si dovrebbe anche dare un'occhiata allo parentrevspec extension per abilitare una sintassi più simile a Git per specificare le revisioni.

5

L'esatto equivalente di "git show HEAD ^" sarebbe:

hg log -pr -2 # -1 (last commit), -2 - one before it, etc. 

o per esempio se si vuole guardare gli ultimi 3 commit (con diff):

hg log -pr -3: # colon means start 3 commits behind and up to tip inclusive 

Un po 'in ritardo con la risposta, ma ancora. :)

UPDATE: a quanto pare ora HG supporta la sintassi git così:

hg exp tip^^^..tip 

o

hg log -pr tip~4 
+0

Questi sono due punti ":", non un punto e virgola ";" –

+0

Di cattivo. Fisso. Grazie per la segnalazione – Alex

0

Se si desidera solo per vedere il contenuto e differenziali di un commit, utilizzare questo :

hg diff -c <the commit hash or bookmark name> 

Per vedere il commit che hai controllato out (HEAD in git), procedere come segue:

hg diff -c -1 

Se volete vedere il commit prima che (HEAD^in git), fare questo:

hg diff -c -2 

semplice.

Problemi correlati