До недавнего времени мы использовали SVN для всех проектов нашей веб-студии, и существует очень удобная функция, существующая в нескольких клиентах как Подрывной и TortoiseSVN, который может извлечь все файлы, которые были изменены в определенном пересмотре.
Существует ли способ выполнить в нем Подвижный? Я не забочусь, сделано ли это через GUI или командную строку, просто очень удобно иметь ряд файлов, которые были изменены в определенном changeset.
P.S. Я, должно быть, поместил его неправильно в первый раз. Мне нужны больше, чем просто список файлов, было бы замечательно иметь все файлы, экспортируемые в некоторую другую папку.
Основываясь на ответе Джерома, вы получите копии файлов , которые были изменены в версии 4:
hg archive --type files --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles
Это помещает все файлы, которые были изменены в четвертой версии, во вновь созданный каталог с именем changedfiles в вашем домашнем каталоге.
Если вы измените его на:
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» в нашем примере, отображается дважды. Все это очень легко можно обернуть в сценарий оболочки, который будет параметризован, так что вам не придется забывать менять его в обоих местах.
Это дает вам список измененных файлов в версии 4:
hg log -r 4 --template {files}
Обновление: Если вы хотите, чтобы в каждой строке был один файл, вы можете использовать стиль описан в книге Hg .
В зависимости от вашего ned есть две команды:
Чтобы получить изменения, связанные с определенной ревизией, вы можете использовать hg export
:
hg export -r 23
Это сгенерирует различие всех изменений (фактически отформатированный патч, готовый к применению)
Чтобы получить имена всех затронутых файлов, вы можете использовать hg log
:
hg log -r 23 -v
Будет напечатана метаинформация для ревизии вместе с именами затронутых файлов.
Эта команда выводит имена всех измененных файлов в указанной ревизии:
hg export revision_num | grep ^diff | cut -f 6 -d ' '