2013-07-03 6 views
5

Sto cercando un modo con TortoiseHg (o plain hg se non esistono altre possibilità) per individuare tutte le modifiche a un determinato file.Trova tutti i changeset nel ramo denominato in cui il file "X" è stato modificato (incluse le une)

Ho provato a utilizzare una query di revisione set: merge() and file("path/to/filename.cs") ma questo non mi ha ottenuto quello che sto cercando. Restituisce un set vuoto. Presumo che ciò sia dovuto al fatto che merge() restituisce solo le unioni e che solo file() restituisce non unioni, quindi l'intersezione è vuota.

Ho anche provato modifies(pattern) ma che non appare sufficientemente differenti da file(pattern) (mi sembra file() è l'unione di adds() e modifies()). contains(pattern) non restituisce alcun elemento.

Quindi, è possibile ottenere un elenco di changeset in cui un particolare file è stato modificato in qualche modo?

risposta

4

Sembra che si sta eseguendo in "come ha fatto il mio cambiamento entrare in questo ramo" problema. Quando unisci un changeset in un ramo, Mercurial non lo registra come una modifica. Invece, prende nota che il changeset unito è ora parte del ramo di destinazione. L'unica volta che un'unione mostrerà che un file è stato modificato è se c'è stato un conflitto di merge, che si traduce in un nuovo changeset.

Trovare ciò che ha portato un changeset in un ramo è un processo in due fasi. Innanzitutto, devi trovare il changeset in cui si è verificata la modifica che ti interessa.

hg log -r "file('<PATTERN>') 

Una volta che avete quella revisione, trovare la prima discendente di modifiche nel ramo destinazione:

hg log -r "first(branch(<BRANCH>) and descendants(<REVISION>))" 
+0

grazie mille. A volte non riesci a vedere la risposta. Nonostante un numero qualsiasi di ricerche, non mi sono mai imbattuto in questo. Apprezzo la tua risposta, così come il link al duplicato. – reidLinden

0

hg log -r "branch(BRANCH) and file('PATTERN')"

Revset può anche essere utilizzato ed è entrato in filtro Tooolbar in THG Workbench

0
hg log grep name_of_your_file 

fa il trucco per me in termini di trovare tutti i set di cambiamento che hanno ha comportato una modifica a un determinato file. Ovviamente se vuoi qualcosa di carino:

thg log name_of_your_file 
Problemi correlati