您可以使用hg grep,但它会搜索所有文件的内容。
如果我只想搜索已删除文件的文件名以恢复文件名怎么办?
我尝试了hg grep -I 文件名模式 模式,但这似乎没有返回任何结果。
答案 0 :(得分:84)
$ hg log --template "{rev}: {file_dels}\n"
答案 1 :(得分:49)
您也可以使用revsets:
hg log -r "removes('**')"
(修改:请注意双*
- a single one detects removals from the root of the repository only。)
修改:正如Mathieu Longtin建议的那样,这可以与来自template的dfa's answer结合使用,向您展示每个列出的修订版删除的文件:
hg log -r "removes('**')" --template "{rev}: {file_dels}\n"
它具有每行列出一个修订版的优点(用于机器可读性),但是您可以通过使用%
格式化删除列表中的每个项目来使输出对人类更漂亮:
hg log -r "removes('**')" --template "{rev}:\n{file_dels % '{file}\n'}\n"
答案 2 :(得分:7)
如果您使用TortoiseHg工作台,一种方便的方法是使用修订过滤器。只需点击ctrl+s
,然后输入
removes("**/FileYouWantToFind.txt")
**/
表示您要在存储库中递归搜索。
您也可以在文件名中使用*
通配符。您可以使用and
,or
运算符将此查询与其他修订集合并。
答案 3 :(得分:0)
搜索您有效删除的特定文件,并很好地格式化结果:
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
答案 4 :(得分:0)
我已经采取了其他答案并对其进行了改进。
添加了“--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
答案 5 :(得分:-1)
来自项目根目录
hg status . | grep "\!" >> /tmp/filesmissinginrepo.txt