Генерация списка файлов, которые изменились между версиями hg - PullRequest
115 голосов
/ 08 января 2010

Я хочу создать список файлов, которые были изменены между двумя ревизиями в данном каталоге в Mercurial.

В частности, меня не интересует что изменилось, но какие файлы изменились в этом каталоге.

Например, предположим, что между then и otherthen изменились только 2 файла:

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

Какая гипотетическая команда? Я пробовал diff и log, но я не понимаю, как убедить их сделать это: либо я получаю патч (diff), либо я получаю весь репо (log).

Ответы [ 2 ]

162 голосов
/ 08 января 2010
hg status --rev x:y

, где x и y - требуемые номера редакций (или имена тегов или ветвей).

Если вы используете терминал в Windows, добавьте hg status --rev x:y> your-file.txt, чтобы сохранить список в файл.

13 голосов
/ 18 декабря 2015

статус - это то, что вам нужно.

Но, в зависимости от того, что вы подразумеваете под «между двумя ревизиями», вы можете также рассмотреть возможность использования диапазона « x :: y » (DAG - Directed Acyclic Graph).

Учитывая параллельные наборы изменений,

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

hg status --rev 1:4 вернется (1,2,3,4), то есть все между конечными точками и включая их, в соответствии с местным, числовым rev . Это может (и, скорее всего, будет) возвращать разные результаты в других, хотя и связанных, репозиториях!

hg status --rev 1::4 вернется (1,2,4), т.е. конечные точки и все наборы изменений, которые являются потомками из '1' И предками из '4'.

Последний случай, x :: y, обычно более полезен в реальных приложениях. Это то, что вы получаете через TortoiseHg \ Visual Diff.


> hg help revsets:

"х :: у" Диапазон DAG, означающий все наборы изменений, которые являются потомками х и предки у, в том числе х и у самих. Если первая конечная точка пропущено, это эквивалентно "предкам (у)", если второй оставлен вне это эквивалентно "потомкам (х)".

...