我有一个修订哈希键。我想获得包含任何内容的最接近的修订版,但 .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
在这种情况下,如果给定的版本是633cf1f61665
,那么我正在寻找该版本9451e8f187b1
,因为它是最接近的版本,它不仅包含 .hgtags,还包含其他内容。
在给定的情况下633cf1f61665
,我如何9451e8f187b1
使用尽可能少的 hg.exe 调用来定位?
编辑
我已经修复了输出,它应该显示来自同一分支的修订。
编辑2
我会试着解释一下自己。让我们定义两个概念:
- 一个沉闷的变更集 - 由
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.
例如,给定633cf1f61665
或6cad328c622c
或9451e8f187b1
所需的修订是9451e8f187b1
.