在Mercurial中,如何检查分支的文件版本?

时间:2013-02-11 21:50:00

标签: mercurial

我只对单个文件的历史感兴趣。我已经尝试过hg log,它显示了对文件所做的所有更改。但是如果有一个由整个存储库构成的分支,我如何从日志中知道(没有检查该分支中的整个存储库,然后查看该文件并手动比较头部中的不同签到)哪个版本的该分支得到的文件(即在头部的哪个点)?

(我也尝试使用谷歌搜索无效。也许我没有使用正确的搜索词,因为我是Mercurial的新手。我希望我已经清楚地解释了我的目标。)

提前多多感谢!

4 个答案:

答案 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))"