Вы можете использовать hg grep, но он ищет содержимое всех файлов.
Что делать, если я просто хочу искать имена файлов удаленных файлов для восстановления?
Я пробовал шаблон hg grep -I file-name-pattern, но это, похоже, не возвращает никаких результатов.
Ответ 1
используя шаблоны просты:
$ hg log --template "{rev}: {file_dels}\n"
Ответ 2
Обновление для Mercurial 1.6
Вы также можете использовать revsets:
hg log -r "removes('**')"
( Изменить: Обратите внимание на двойное *
- один обнаруживает удаление из root из репозитория.)
Изменить. Как предполагает Матье Лонгтин, это можно объединить с template из dfa answer, чтобы показать вам, какие файлы удаляются каждой из перечисленных ревизий:
hg log -r "removes('**')" --template "{rev}: {file_dels}\n"
Это имеет достоинство (для машинной удобочитаемости) перечисления одной ревизии на строку, но вы можете сделать вывод более приятным для людей, используя %
для форматирования каждого элемента в списке удалений:
hg log -r "removes('**')" --template "{rev}:\n{file_dels % '{file}\n'}\n"
Ответ 3
Если вы используете Workbench TortoiseHg, удобным способом является использование фильтра проверки. Просто нажмите ctrl+s
, а затем введите
removes("**/FileYouWantToFind.txt")
**/
указывает, что вы хотите искать рекурсивно в своем репозитории.
Вы можете использовать подстановочный знак *
в имени файла. Вы можете комбинировать этот запрос с другими наборами ревизий с помощью операторов and
, or
.
Существует также этот редактор расширенных запросов:
![введите описание изображения здесь]()
Ответ 4
Найдите конкретный файл, который вы удалили эффективно, и хорошо отформатируйте результат:
hg log --template "File(s) deleted in rev {rev}: {file_dels % '\n {file}'}\n\n" -r 'removes("**/FileYouWantToFind.txt")'
Пример вывода:
File(s) deleted in rev 33336:
class/WebEngineX/Database/RawSql.php
File(s) deleted in rev 34468:
class/PdoPlus/AccessDeniedException.php
class/PdoPlus/BulkInsert.php
class/PdoPlus/BulkInsertInfo.php
class/PdoPlus/CannotAddForeignKeyException.php
class/PdoPlus/DuplicateEntryException.php
class/PdoPlus/Escaper.php
class/PdoPlus/MsPdo.php
class/PdoPlus/MyPdo.php
class/PdoPlus/MyPdoException.php
class/PdoPlus/NoSuchTableException.php
class/PdoPlus/PdoPlus.php
class/PdoPlus/PdoPlusException.php
class/PdoPlus/PdoPlusStatement.php
class/PdoPlus/RawSql.php
Ответ 5
Я взял другие ответы и улучшил его.
Добавлено "--no-merges". В большом проекте с командой разработчиков будет много слияний. --no-merger отфильтрует лог-шум.
Измените removes("**")
на sort(removes("**"), -rev)
. Для большого проекта с более чем 100K наборами изменений это приведет к удалению последних файлов намного быстрее. Это отменяет порядок от начала до оборота 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) <vir@lindenlab.com>
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) <vir@lindenlab.com>
SL-276 WIP - removed avatar_XXX_orig.xml files.
indra/newview/character/avatar_lad_orig.xml
indra/newview/character/avatar_skeleton_orig.xml
Ответ 6
из корня проекта
hg status . | grep "\!" >> /tmp/filesmissinginrepo.txt