У меня есть ключ хэширования ревизии.Я хотел бы получить ближайшую ревизию, которая содержит что-нибудь, кроме .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
.