Как извлечь все измененные файлы набора изменений в Mercurial? - PullRequest
8 голосов
/ 18 декабря 2009

До недавнего времени мы использовали SVN для всех проектов нашей веб-студии, и в некоторых клиентах, таких как Subversive и TortoiseSVN, есть очень удобная функция, которая может извлекать все файлы, которые были изменены в определенной ревизии.

Есть ли способ сделать это в Mercurial? Мне все равно, если это делается через графический интерфейс или командную строку, просто очень удобно иметь набор файлов, которые были изменены в определенном наборе изменений.

P.S. Должно быть, я ошибся с первого раза. Мне нужно больше, чем просто список файлов, было бы здорово, чтобы все файлы были экспортированы в какую-то другую папку.

Ответы [ 4 ]

11 голосов
/ 18 декабря 2009

Опираясь на ответ Джерома, вы получите копии файлов , которые изменились в редакции 4:

hg archive --type files --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles

Это помещает все файлы, которые изменились в редакцию четыре, во вновь созданный каталог с именем changefiles в вашем homedir.

Если вы измените его на:

hg archive --type zip --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles.zip

затем они появляются в zip-архиве.

Стоит отметить, что это работает, только если у вас нет пробелов в именах файлов. Если вы допустили эту ошибку, тогда нам нужно будет использовать hg status --print0 -r revision -r parent-of-revision, но, надеюсь, в этом нет необходимости.

Обратите внимание, что номер ревизии, «4» в нашем примере, отображается дважды. Все это можно легко обернуть в сценарий оболочки, и это будет параметризовано, так что вам не нужно будет менять его в обоих местах.

7 голосов
/ 18 декабря 2009

Это дает вам список измененных файлов в редакции 4:

hg log -r 4 --template {files}

Обновление: Если вы хотите, чтобы в каждой строке был один файл, вы можете использовать стиль, описанный в книге Hg .

1 голос
/ 18 декабря 2009

В зависимости от вашего ned, есть две команды:

  1. Чтобы получить изменения, связанные с конкретной ревизией, вы можете использовать hg export:

    hg export -r 23
    

Это сгенерирует различия всех изменений (фактически отформатированный патч, готовый к применению)

  1. Чтобы получить имя всех файлов, которые были затронуты, вы можете использовать hg log:

    hg log -r 23 -v
    

Это напечатает метаинформацию для ревизии вместе с именами файлов, которые были затронуты.

0 голосов
/ 18 декабря 2009

Эта команда выводит имена всех измененных файлов в указанной ревизии:

hg export revision_num | grep ^diff | cut -f 6 -d ' '
...