2012-01-14 13 views
10

Prima di passare a un repository remoto, voglio vedere una diff consolidata tra il capo del mio repository locale e il capo del repository che sto spingendo troppo. Il modo migliore che conosco per fare questo è hg clone il repository remoto, ottenere la revisione della testa, quindi fare una diff tra la mia testa e quella revisione. Ma questo richiede tempo. C'è un modo rapido?Come visualizzare il diff tra head of local repository e head of remote repository?

+2

Se stai spingendo verso un repository la cui testa non è un antenato della tua revisione attuale, non è un segno che probabilmente stai facendo qualcosa di molto sbagliato? – geoffspear

+1

Il capo del repository remoto è un antenato del mio capo locale. Voglio ottenere una differenza tra quella testa e la mia testa locale. Quindi, forse, voglio solo un comando hg per stampare la revisione principale di un repository remoto. Quindi posso diff manualmente contro quella revisione. – jhourback

risposta

11

Se stai cercando un modo per ottenere tutte le modifiche apportate che non si trovano nel repository remoto.

$ hg outgoing -p 

Il -p è opzionale e delle relazioni sotto forma di una patch, altrimenti si riferisce allo stesso modo un hg log. Questo è solo il tuo cambiamento indipendentemente dal fatto che qualcun altro abbia inserito qualcosa nel repository remoto.

Se siete alla ricerca di cambiamenti nel repository remoto che non avete quindi si utilizza

$ hg incoming 

Anche in questo caso c'è un modulo -p se lo vuoi.


Nessuno di questi è esattamente quello che hai chiesto, ma sospetto che in realtà non lo vuoi.

Se si desidera realmente la differenza tra le modifiche e la nuova testina nel repository remoto creato da qualcun altro, è necessario eseguire le relative modifiche.

hg pull 
hg heads      # find revision number of new head 
hg diff -r 124992   # or whatever the revision number is. 
22

Oltre a

$ hg outgoing -p 

che io normalmente uso, mi piace puntare a revision sets. Questo è un linguaggio di query che è possibile utilizzare con hg diff (e tutti gli altri comandi che consentono di specificare i set di modifiche). Così si può implementare hg outgoing -p da

$ hg log -r "outgoing()" -p 

e si può ottenere un diff tra il genitore del primo changeset in uscita e l'ultimo changeset in uscita con

$ hg diff -r "p1(first(outgoing()))" -r "last(outgoing())" 

Infine, il remotebranch extension può mantenere le informazioni locali sulla filiali remote in modo che non sia necessario utilizzare la rete per cercare queste informazioni. Esso consente di utilizzare

$ hg log -r "not pushed()" 

per trovare i gruppi di modifiche in uscita, ma è molto più veloce dato che non c'è nessun viaggio rete rotonde coinvolti.

Problemi correlati