Вопрос по version-control – Найти удаленные файлы в истории хранилища Mercurial, быстро?
Добавлен & quot; - без слияний & quot ;. На большом проекте с командами разработчиков будет много слияний. --no-merger отфильтровывает шум журнала.
+ Изменитьremoves("**")
вsort(removes("**"), -rev)
, Для большого проекта с более чем 100 тыс. Наборов изменений это позволит быстрее удалять последние файлы. Это меняет порядок с начального на 0-й, начиная с первого.
Добавлены {author} и {desc} для вывода. Это даст контекст относительно того, почему файлы были удалены, показывая комментарий журнала и кто это сделал.
Так что для моего случая использования это былоhg log --template "File(s) deleted in rev {rev}: {author} \n {desc}\n {file_dels % '\n {file}'}\n\n" -r 'sort(removes("**"), -rev)' --no-merges
Пример вывода:
File(s) deleted in rev 52363: Ansariel
STORM-2141: Fix various inventory floater related issues:
* Opening new inventory via Control-Shift-I shortcut uses legacy and potentinally dangerous code path
* Closing new inventory windows don't release memory
* During shutdown legacy and inoperable code for inventory window cleanup is called
* Remove old and unused inventory legacy code
indra/newview/llfloaterinventory.cpp
indra/newview/llfloaterinventory.h
File(s) deleted in rev 51951: Ansariel
Remove readme.md file - again...
README.md
File(s) deleted in rev 51856: Brad Payne (Vir Linden) <[email protected]>
SL-276 WIP - removed avatar_skeleton_spine_joints.xml
indra/newview/character/avatar_skeleton_spine_joints.xml
File(s) deleted in rev 51821: Brad Payne (Vir Linden) <[email protected]>
SL-276 WIP - removed avatar_XXX_orig.xml files.
indra/newview/character/avatar_lad_orig.xml
indra/newview/character/avatar_skeleton_orig.xml
удобный способ - использовать фильтр ревизий. Просто нажмитеctrl+s
, а затем введите
removes("**/FileYouWantToFind.txt")
**/
указывает на то, что вы хотите выполнить рекурсивный поиск в вашем хранилище.
Ты можешь использовать*
подстановочный знак в имени файла тоже. Вы можете объединить этот запрос с другими наборами ревизий, используяand
, or
операторы.
Ты можешь использоватьrevsets для этого тоже:
hg log -r "removes('**')"
(Edit: Note the double *
- один обнаруживает удаления только из корня хранилища.)
Edit: Как предполагает Матье Лонгтен, это можно сочетать сшаблон отответ dfa показать тебеwhich файлы, которые каждая из перечисленных версий удаляет:
hg log -r "removes('**')" --template "{rev}: {file_dels}\n"
Это имеет преимущество (для машиночитаемости) перечисления одной ревизии на строку, но вы можете сделать вывод более привлекательным для людей, используя%
чтобы отформатировать каждый элемент в списке удалений:
hg log -r "removes('**')" --template "{rev}:\n{file_dels % '{file}\n'}\n"
с помощьюшаблоны просты:
$ hg log --template "{rev}: {file_dels}\n"