如何从某个更改集中获取影响特定文件夹中文件的所有mercurial变更集的日志?

时间:2012-12-20 11:34:17

标签: mercurial

$HG_NODE引用了我希望开始的变更集:

[vcs@Quake /tmp/test/advanced]$ hg log -r $HG_NODE: --template '{node|short}:{files}\n'
c5eefea063fd:1.txt backup.cmd notes.txt
370f9ef91471:1.txt backup.cmd notes.txt
5eac12f79df6:advanced/Program.cs advanced/a advanced/b advanced/notes.txt lab6/scratch2/Fiobonacci.sln lab6/scratch2/Program.cs lab6/scratch2/xxx lab6/scratch2/yyy
4be96f43f327:advanced/1.txt
c724950dd2a6:advanced/Fiobonacci.csproj advanced/aaa.kuku

现在,我还有一个目录,这对我来说特别感兴趣。所以,我希望从起始版本中获取影响此目录中文件的所有更改集。

首先,我尝试检查是否可以获取特定文件:

[vcs@Quake /tmp/test/advanced]$ hg log -r "$HG_NODE: and file('path:advanced/1.txt')" --template '{node|short}\n'
4be96f43f327

然后,对于该目录中的所有文件。但我似乎错过了一些东西:

[vcs@Quake /tmp/test/advanced]$ hg log -r "$HG_NODE: and file('path:advanced/**')" --template '{node|short}\n'
[vcs@Quake /tmp/test/advanced]$ hg log -r "$HG_NODE: and file('set:advanced/**')" --template '{node|short}\n'
abort: fileset expression with no context
[vcs@Quake /tmp/test/advanced]$ hg log -r "$HG_NODE: and file('glob:advanced/**')" --template '{node|short}\n'
[vcs@Quake /tmp/test/advanced]$ hg log -r "$HG_NODE: and file('advanced/**')" --template '{node|short}\n'
[vcs@Quake /tmp/test/advanced]$ hg log -r "$HG_NODE: and file('re:^advanced/.*')" --template '{node|short}\n'
5eac12f79df6
4be96f43f327
c724950dd2a6

只有re:前缀适用于我,但这也适用于glob:

如何使其与glob:**一起使用?

1 个答案:

答案 0 :(得分:1)

经过一段时间的游戏,我认为这是因为你已经在advanced目录中了。尝试以下选项之一(假设是这种情况):

1)仅指定您要匹配此目录中的文件:

$ hg log -r "$HG_NODE: and file('glob:**')" --template '{node|short}\n'
5eac12f79df6
4be96f43f327
c724950dd2a6

2)转到父目录:

$ cd ..
$ hg log -r "$HG_NODE: and file('glob:advanced/**')" --template '{node|short}\n'
5eac12f79df6
4be96f43f327
c724950dd2a6

3)使用path选项,但不指定/**

$ hg log -r "$HG_NODE: and file('path:advanced')" --template '{node|short}\n'
5eac12f79df6
4be96f43f327
c724950dd2a6

这些选项似乎都适用于我的小型测试回购。