Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 如何获得与给定版本最接近的版本,该版本包含除.hgtags之外的其他更改?_Version Control_Mercurial_Dvcs_Directed Acyclic Graphs - Fatal编程技术网

Version control 如何获得与给定版本最接近的版本,该版本包含除.hgtags之外的其他更改?

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

我有一个修订哈希键。我想获得最接近的版本,其中包含除.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:
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)”给出了相同的修订细节!