Version control 如何获得与给定版本最接近的版本,该版本包含除.hgtags之外的其他更改?
我有一个修订哈希键。我想获得最接近的版本,其中包含除.hgtag以外的任何内容Version control 如何获得与给定版本最接近的版本,该版本包含除.hgtags之外的其他更改?,version-control,mercurial,dvcs,directed-acyclic-graphs,Version Control,Mercurial,Dvcs,Directed Acyclic Graphs,我有一个修订哈希键。我想获得最接近的版本,其中包含除.hgtag以外的任何内容 例如,考虑水星历史的以下片段: 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
例如,考虑水星历史的以下片段:
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
在本例中,如果给定的版本是633cf1f61665
,那么我将查找版本9451e8f187b1
,因为它是最接近的版本,它不仅包含.hgtag,还包含其他内容
给定633cf1f61665
,如何使用尽可能少的hg.exe调用查找9451e8f187b1
编辑
我已经修复了输出,它应该显示来自同一分支的修订
EDIT2
我会尽力解释我自己。让我们定义两个概念:
- 枯燥的变更集-由
操作创建的变更集hg标记
- 有趣的变更集-任何非单调的变更集
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.
例如,给定633cf1f61665
或6cad328c622c
或9451e8f187b1
所需的修订是9451e8f187b1
尝试
$ hg log -r "max(::REV and not file(.hgtags))"
看看这是否符合你的要求。有关查询语言的更多信息,请参阅hg help revset
如果经常使用,可以为此设置revset别名:
[revsetalias]
interesting($1) = max(::$1 and not file(.hgtags))
然后在将来使用
hglog-r“有趣的(123)”
。为什么要使用该变更集?你真的想要“先前标记的变更集”吗?我已经编辑了这个问题,现在它更有意义了吗?宾果。顺便说一句,根据文档,它可以写得更短-hg log-r“last(:15400-file(.hgtags),1)”
是的,如果您愿意,您可以使用-
。我已经更新了一点答案,并用更简单的max(…)
替换了last(…,1)
。谢谢,但称之为未标记的是错误的。找到的修订可以标记好,只是该修订本身没有记录标记操作。是的,未标记的
不是最好的名称--
被视为set操作符!:-)我现在给它起了一个更好的名字。嘿,我想在给定的修订之前得到修订。我用什么?hg log-r“max(::REV)”给出了相同的修订细节!