Mercurial/hg:在特定版本(不更新到该版本)中搜索文件(按文件名)

Mercurial/hg:在特定版本(不更新到该版本)中搜索文件(按文件名),mercurial,Mercurial,我需要一个特定版本的文件。我有我感兴趣的修订版本的变更集id。此外,我的文件名为全小写,没有路径((我希望)文件名在存储库中是唯一的):example.cpp。现在我想找到文件的完整路径。然后我将使用路径hgcat-r#REV/path/to/Example.cpp 困难可能是,文件同时被重命名或删除。但是我需要特定时间点和特定分支(由变更集id标识)的文件 我可以看到,实现这一点最简单的方法就是更新到该版本并在本地工作目录中搜索该文件。但这太慢了,无法在服务器上以批处理模式自动完成。我希望类似

我需要一个特定版本的文件。我有我感兴趣的修订版本的变更集id。此外,我的文件名为全小写,没有路径((我希望)文件名在存储库中是唯一的):example.cpp。现在我想找到文件的完整路径。然后我将使用路径
hgcat-r#REV/path/to/Example.cpp

困难可能是,文件同时被重命名或删除。但是我需要特定时间点和特定分支(由变更集id标识)的文件

我可以看到,实现这一点最简单的方法就是更新到该版本并在本地工作目录中搜索该文件。但这太慢了,无法在服务器上以批处理模式自动完成。我希望类似于
hg findfile 3b62b0e7edcb48e34ca08bed31c6cd1d00df93c2-name的东西——忽略示例.cpp
,它可以在指定版本(由变更集id 3b62b0e7edcb48e34ca08bed31c6cd1d00df93c2标识)找到具有该名称(例如.cpp)的文件。理想情况下,我将只找到一个,然后可以使用hg cat获取文件的内容

如果我可以在变更集id标识的特定时间点打印整个文件树,那么还有什么可以帮助我呢?我非常确定这是可能的,因为webfrontend hgweg还允许以特定的变更集id在线浏览该目录。(例如,此处:)。然后,我可以递归地对该文件进行不区分大小写的搜索,并
hgcat

背景: 我目前正在扩展一个自动崩溃转储文件分析器。我们在应用程序中使用。我们的崩溃转储分析器知道崩溃版本的变更集id。现在,它通过从调试符号目录中获取正确的调试符号(pdb)来自动分析崩溃转储。结果是一个调用堆栈,它显示小写文件名(example.cpp),但不显示路径。我只想获取该文件的相应代码


在谷歌搜索期间,我发现这解决了我一半的问题。我还发现了我以前不知道的
hg grep
,但如果我正确理解了
hg grep-l example.cpp
可以找到该文件,但它不会告诉我这是否是我感兴趣的特定版本中使用的路径。因为grep可能会得到错误的版本或其他分支。(但正如我所说,今天是我第一次听说hg grep,也许我在这里看不到明显的解决方案…。

您可以使用hg manifest-r REV获得该版本中所有文件的列表。然后,您可以在该列表中搜索您的文件。

根据Joeri van Ruth的答案完成解决方案

列出指定版本的所有文件:

hg舱单-r 3B62B0E7EDCB48E34CA08BED31C6CD1D0DF93C2

然后搜索example.cpp文件并提取整个路径(例如,使用grep)。。。然后获取文件内容:

hg cat-r 3B62B0E7EDCB48E34CA08BED31C6CD1D0DF93C2“Folder/Sub/Example.cpp”