mar*_*ark 2 version-control mercurial dvcs directed-acyclic-graphs
我有一个修订哈希键.我想获得包含任何内容的最接近的修订版,但是.hgtags.
例如,考虑Mercurial历史的以下片段:
D:\CI\NC\8.0>hg log -l3 -b 8.0 -v
changeset: 1768:633cf1f61665
branch: 8.0
tag: tip
user: ci
date: Wed Nov 16 21:06:20 2011 +0200
files: .hgtags
description:
Replaced tag 'good.NC.16' with 'rejected.NC.16' for changeset 9451e8f187b1
changeset: 1767:6cad328c622c
branch: 8.0
parent: 1765:9451e8f187b1
user: ci
date: Wed Nov 16 21:04:26 2011 +0200
files: .hgtags
description:
Added tag 'good.NC.16' for changeset 9451e8f187b1
changeset: 1765:9451e8f187b1
branch: 8.0
tag: rejected.NC.16
user: gilad
date: Tue Nov 15 18:26:09 2011 +0200
files: .hgignore
description:
update
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果给定的修订版本是633cf1f61665,那么我正在寻找修订版本9451e8f187b1,因为它是最接近的版本,它不仅包含.hgtags,还包含其他内容.
如何,633cf1f61665我可以找到9451e8f187b1尽可能少的hg.exe调用?
编辑
我已经修复了输出,它应该显示来自同一分支的修订版.
EDIT2
我会尽力解释自己.让我们定义两个概念:
hg tag行动创建的变更集.所以,我的问题可以改写如下:
Given an arbitrary revision (dull or interesting) I need to find the closest
interesting revision belonging to the same named branch using as few hg invocations
as possible.
Run Code Online (Sandbox Code Playgroud)
例如,给定633cf1f61665或6cad328c622c或9451e8f187b1所需的修订是9451e8f187b1.
试试吧
$ hg log -r "max(::REV and not file(.hgtags))"
Run Code Online (Sandbox Code Playgroud)
看看那是否符合你的要求.有关hg help revsets查询语言的详细信息,请参阅.
如果您经常使用它,可以为此创建一个revset别名:
[revsetalias]
interesting($1) = max(::$1 and not file(.hgtags))
Run Code Online (Sandbox Code Playgroud)
然后hg log -r "interesting(123)"在将来使用.