首页 > 解决方案 > 如何在 Mercurial 存储库中搜索文件名?

问题描述

我想在所有提交/分支中搜索文件名,并找出哪些提交/分支包含该文件名。我不知道文件将在 repo 的哪个子目录/子目录中。

我试过hg grep <filename>了,但这似乎只显示包含filename”的文件。

我还查看了Mercurial - 确定文件被删除的位置?,但如果文件是在不同的分支上创建的,那真的对我有帮助。问这个问题的人建议hg log myfile -v,这似乎可以工作,但没有。我知道在我的 repo 中某处该文件存在,因为当我这样做时我得到了一些东西find .hg | grep <filename>,但这并没有告诉我(至少不清楚)哪些提交/分支。

标签: mercurial

解决方案


  1. 您必须阅读hg help patterns并且可能hg help filesets为了为文件编写正确的模式(很可能您会对模式感到满意)
  2. 如果文件现在存在于工作目录中(即后来添加但未删除),您将找到它hg file <PATTERN>并通过输出确定完整路径,见上文(使用的模式)

>hg file **/test-extra.t tests\test-extra.t

hg log使用完整文件名调用

  1. 在任何情况下hg file对于已删除的文件或仍在 WD 中的文件返回 0),您也可以调用hg log <FILESET>并获取历史记录。现有日志太长,将显示已删除的唯一文件名示例

>hg log set:**/dulwich/tests/__init__.py -Tcompact 223 0b6c08800d16 2009-07-23 08:48 +0100 a delete the dulwich fork we have
2 c43c02cc803a 2009-04-22 16:59 -0700 schacon added dulwich library and got the script to call it for clone

  1. 如果您的设置太宽并且(可能)在不同文件夹中包含具有相同名称的文件,您必须通过调用 log 来验证文件名,其中包含有关文件的更多详细信息,fe 与-Tstatus

推荐阅读