2

リビジョン ハッシュ キーを持っています。.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

この場合、指定されたリビジョンがである場合、 .hgtags だけでなく他の何かを含む最も近いリビジョンであるため633cf1f61665、リビジョンを探しています。9451e8f187b1

与えられた場合、できるだけ少ない hg.exe 呼び出しを使用してどのよう633cf1f61665に見つけることができますか?9451e8f187b1

編集

出力を修正しました。同じブランチからのリビジョンが表示されているはずです。

EDIT2

私は自分自身を説明しようとします。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です。

4

1 に答える 1

5

試してみてください

$ hg log -r "max(::REV and not file(.hgtags))"

そして、それがあなたが望むものかどうかを確認してください。hg help revsetsクエリ言語の詳細については、を参照してください。

頻繁に使用する場合は、これに revset エイリアスを作成できます。

[revsetalias]
interesting($1) = max(::$1 and not file(.hgtags))

そしてhg log -r "interesting(123)"、将来的に使用します。

于 2011-11-17T10:10:36.193 に答える