我只对单个文件的历史感兴趣。我已经尝试过hg log,它显示了对文件所做的所有更改。但是如果有一个由整个存储库构成的分支,我如何从日志中知道(没有检查该分支中的整个存储库,然后查看该文件并手动比较头部中的不同签到)哪个版本的该分支得到的文件(即在头部的哪个点)?
(我也尝试使用谷歌搜索无效。也许我没有使用正确的搜索词,因为我是Mercurial的新手。我希望我已经清楚地解释了我的目标。)
提前多多感谢!
答案 0 :(得分:1)
您正在考虑'svn'(或CSV)术语。在Mercurial(或git)的上下文中,您的问题没有意义。单个文件在这些DVCS中都没有版本。版本称为修订版,并且是存储库范围的。您不能像在svn中那样“签出”一个文件的修订版X和另一个文件的修订版Y.
所以类似于你的问题可能是“最近修改了分支Y中的文件X的修订版本”,并且获得该答案的一种方法是:
hg log -r 'ancestors(Y)' X
或
hg log -r 'ancestors(default)' TODO
带有一些具体的价值观。
答案 1 :(得分:0)
您可以使用glog
命令:
$ hg glog foo.py
请注意,您需要启用graphlog
扩展程序,方法是将hgext.graphlog =
添加到[extensions]
的{{1}}标题中:
~/.hgrc
一个简单的,手动的方法来确定何时采取分支是运行:
$ cat ~/.hgrc
[extensions]
hgext.graphlog =
…
$
然后搜索文件名并查看其中的更改集。
或者,您可以运行:
$ hg glog
要显示包含hg log -r 'ancestors(mybranch)' myfile
更改的mybranch中和之前的所有更改集,请查找在执行分支之前修改文件的最后一个更改集:
$ hg log -r 'ancestors(mybranch)' myfile changeset: 30:3b2f7243c1ac user: David Wolever <david@wolever.net> date: Mon Nov 15 09:47:46 2010 -0500 files: myfile description: doing stuff changeset: 31:804257c328ab <-- last change to the file before the branch user: David Wolever <david@wolever.net> date: Thu Nov 18 21:44:11 2010 -0500 files: myfile description: changing things changeset: 32:df26ccd32c38 <-- change was made to the file in the branch branch: mybranch user: David Wolever <david@wolever.net> date: Thu Nov 18 23:23:44 2010 -0500 files: myfile anotherfile description: starting mybranch
答案 2 :(得分:0)
不确定这是否是您想要的,但您可以使用
列出包含特定文件名的所有修订版本hg log -r "contains(filename)"
或
hg glog -r "contains(filename)"
如果您想要更具体的内容,请查看hg help revsets
输出,其中显示了-r
选项的可能性。
答案 3 :(得分:0)
对于Ry4an,日志的任务revset文本必须是
"max(branch(Y) & contains(X))"