2012-03-26 8 views
13

Как получить список файлов, измененных между двумя произвольными наборами изменений?Mercurial: список файлов «hg diff»

Моя только догадка что-то ужасное, как это:

# files where something has been added 
hg diff -r AA -r BB|grep -- +++|cut -f1|cut -d/ -f2- >/tmp/ka 

# files where something has been removed 
hg diff -r AA -r BB|grep -- ---|cut -f1|cut -d/ -f2- >>/tmp/ka 

# filtering out "dev/null": it appears when a file is added or removed from the repository 
sort -u /tmp/ka |grep -v dev/null 

Может быть, есть ртутный команда, которую я не заметил?


NOT измененные файлы одного набора изменений.
редактировать: мне нужно сделать это, потому что я работаю с некоторыми программистами из бронзового века, которые не понимают, что такое .diff есть, пожалуйста, медведь со мной ...

+0

Пожалуйста, напишите на итальянском языке. Потому что «модифицированный из двух произвольных наборов изменений» является непредсказуемым куском шума и неправильной интерпретации. Между двумя или только этими двумя? –

+1

Довольно уверен, что он пытается проверить, что произошло в наборе изменений change-by-changeset, сродни изучению истории различий для одного изменения файла путем изменения. –

+0

Файлы, измененные между набором изменений AA и набором изменений BB. Что-то вроде «hg diff -r AA -r BB», но только имена файлов, а не целый diff, то есть то, что я предложил в этой командной строке. –

ответ

30

hg diff -r 182 -r 193 --stat

или

hg status --rev 182:193

+0

О, спасибо, вот и все! –

+0

'--rev' и' -r' ведут себя одинаково в моей системе ... это была ошибка в 2012 году? – mpen

+0

Кажется, что это исправлено сейчас, да. –

0

Solution один. Diff основе

>hg diff -r 3 -r 4 --stat 
comments.php | 14 +++----------- 
functions.php | 15 +++++++++++++-- 
header.php | 2 +- 
readme.txt | 17 ++++++++++++++--- 
sidebar.php | 43 ++++--------------------------------------- 
style.css  | 18 ++++++++++++------ 
6 files changed, 47 insertions(+), 62 deletions(-) 

вы можете получить измененные файлы на оглавлению «|» символ, или (лучше и лучше подход от моего POV) выходной трубы, чтобы поглазеть, который для записи с ровно 4 полем, печатью $ 1

Solution два. Вход + шаблонный + revsets

>hg log -r "3::4" --template "{file_mods}\n" 
footer.php functions.php header.php search.php style.css 
comments.php functions.php header.php readme.txt sidebar.php style.css 

конвертировать в список, удалить (возможные) дубликаты я оставлю для вас

8

Основная команда, чтобы искать, когда вы хотите что-то узнать о состоянии файла является hg status. Командой status является команда с именем и вы хотите узнать некоторые имена файлов.

При запуске как

$ hg status 

затем сравнивает состояние рабочей копии с родительской ревизией рабочей копии (.). Но если вы запустите его как

$ hg status --rev AA:BB 

, то он будет показывать файлы, измененные между AA и BB! Нет необходимости в grepping, резке, сортировке или шаблонах.

(я объяснил это раньше here, here и here смотрите на эти вопросы и ответы на дополнительные советы.)

+0

Не работает с -r, потому что «-r -removed show only deleted files» - это жесткий интерфейс. –

+0

@asaddude: ups! Извините, я исправил его, чтобы использовать '--rev' вместо этого. –

Смежные вопросы