hg log只能显示给定修订版的祖先吗?

Rya*_*yan 16 mercurial

我真的很想念从svn转变为mercurial的一件事是mercurial的hg log命令坚持要显示所有历史记录,而不仅仅是我当前工作修订版的历史记录.

例如,我正在为我的分支机构中的另一个负责人处理一个包含大量签到的仓库,前20个日志条目与我的开发线无关.

hg日志有很多选项,但是......
--rev显示要求的修订而不是它的祖先 -
分支不起作用,因为活动头与我的同一分支
--prune删除了所有的祖先另一个脑袋,即使他们也是我的祖先 -
用户不起作用,因为我不是这个开发线的唯一用户

我想我可能会脱衣服,但这似乎有点过分了......

思考?
瑞安

Nia*_* C. 25

如果你有Mercurial 1.6或更高版本,你可以使用revsets来做到这一点:

hg log --rev "ancestors(.)"
hg log --rev "reverse(ancestors(.))"  # Output in the same order as vanilla hg log
Run Code Online (Sandbox Code Playgroud)


Mar*_*ler 21

我知道版本集在这些日子里风靡一时(hg log -r "::."),但这个鲜为人知的--follow旗帜让你可以使用任何版本的Mercurial做你想做的事.在hg log帮助说(我用粗体强调):

[...]使用-f/--follow文件名来跟踪重命名和副本的历史记录.--follow没有文件名只会显示起始修订版的祖先或后代.[...]

如果未指定修订范围,则默认为tip:0,除非--follow已设置,在这种情况下,工作目录parent用作起始修订.[...]

因此,换句话说,添加-f将为您提供帮助.您可以添加-f到默认值:

[defaults]
log = -f
Run Code Online (Sandbox Code Playgroud)

或者更好的是,你可以为此创建一个别名:

[alias]
logf = log -f
Run Code Online (Sandbox Code Playgroud)

这样可以避免更改核心命令hg log,这可能会使您或您的同事迟早感到困惑.