Generazione di un elenco di quali file sono stati modificati tra le versioni di hg


118

Voglio generare un elenco dei file modificati tra due revisioni in una data directory in Mercurial.

In particolare, non mi interessa cosa è cambiato, ma quali file sono cambiati in quella directory.

Ad esempio, supponendo che tra thene otherthen, siano cambiati solo 2 file:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

Qual è il comando ipotetico? Ho provato diff e log, ma non riesco a vedere come convincerli a farlo: o ottengo la patch (diff) o ottengo l'intero repo (log).

Risposte:


166
hg status --rev x:y

dove xe ysono i numeri di revisione desiderati (o tag o nomi di ramo).

Se stai usando il terminale in Windows aggiungi hg status --rev x:y> your-file.txtper salvare l'elenco in un file.


3
Per vedere solo le modifiche nella directory corrente:hg status --rev x:y .
Utente

14
Per vedere le modifiche nell'ultima revisione: hg status --rev .^
kunigami

8
Per ottenere solo l'elenco dei nomi dei file (e nessun carattere prefisso che indichi il tipo di modifica), aggiungi -n, ad esempiohg status --rev x:y -n
Cheetah

1
hg status --change .elenca i file modificati in .- stesso elenco hg status --rev .^ma più direttamente
Metaxis

14

lo stato è ciò di cui hai bisogno.

Ma, a seconda di cosa intendi per "tra due revisioni", potresti anche considerare di utilizzare l' intervallo " x :: y " (DAG - Grafico aciclico diretto).

Dati i changeset paralleli,

1--2---4 \---3

hg status --rev 1:4 restituirebbe (1,2,3,4), cioè qualsiasi cosa tra e includendo gli endpoint, secondo la revisione numerica locale . Questo potrebbe (e molto probabilmente lo farà) restituire risultati diversi in altri - sebbene correlati - repository!

hg status --rev 1::4restituirebbe (1,2,4), ovvero gli endpoint e tutti i changeset che sono discendenti di "1" AND antenati di "4".

L'ultimo caso, x :: y, è solitamente più utile nelle applicazioni del mondo reale. Questo è ciò che ottieni tramite TortoiseHg \ Visual Diff.


> hg help revsets:

"x :: y" Un intervallo DAG, ovvero tutti i changeset che sono discendenti di x e antenati di y, inclusi x e y stessi. Se il primo punto finale viene omesso, questo è equivalente a "antenati (y)", se il secondo è omesso è equivalente a "discendenti (x)".


1
Forse devi includere esplicitamente il comando in modo che la tua risposta non dipenda dall'altro e più a prova di errore. Qualcosa come "Sì, lo stato è ciò di cui hai bisogno. Ad esempio hg status --rev x::y".
PhoneixS
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.