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

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


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

3 ответов


hg diff -r 182 -r 193 --stat

или

hg status --rev 182:193


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

когда вы запускаете его как

$ hg status

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

$ hg status --rev AA:BB

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

(Я уже объяснял это раньше здесь, здесь и здесь, пожалуйста, посмотрите эти вопросы и ответы для получения дополнительных советов.)


решение одно. Diff-based

>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(-)

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

решения два. Log + templating + 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

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