Журнал Mercurial, который включает происхождение окончательной ревизии, но исключает что-либо в ветви по умолчанию до начальной ревизии
Я работаю над сценарием, который анализирует ртутный журнал и генерирует отчет обо всех изменениях между любыми двумя ревизиями. Для обработки ветвей я считаю, что мне нужно использовать revsets для генерации предков окончательной ревизии, но я хочу ограничить область видимости, чтобы исключить любые ревизии, которые являются предками для начальной ревизии.
10
/
/
9
|\
| \
| \
8 |
| 7
| 6 |
|/ |
5 4
| /
| /
|/
3
|
|
|
2
|
|
|
1
На этапе 3 ветвь объекта создается из ветви по умолчанию.
На 5 ветвь релиза (6) создается из ветви по умолчанию.
На этапе 9 ветвь функций объединяется со значением по умолчанию и создается новый выпуск (10).
Я хочу список всех изменений, начиная с 5, которые влияют на 10 => 4,5,7,8,9,10
Трудность, с которой я сталкиваюсь, заключается в ограничении поиска предков, когда 3 достигается через ветвь функций. Я не хочу этого, так как 3 уже был частью 5.
Другие обсуждения, которые я рассмотрел:
Закрыть, но не помогло с ограничением объема.
Это подразумевает, что вы знаете ветку, но мне нужно найти их все динамически.
1 ответ
Хорошо, если ваша бизнес-задача "Что нового в релизе", лучшая итерация revset будет ancestors(LAST) - ancestors(PREVIOUS)
т.е. для вашего образца
hg log -r "ancestors(10) - ancestors(6)"
(обратите внимание на отсутствие r5 в выходных данных, потому что это было в 6)
возможно revset будет более пригоден для использования в [revsetalias] с добавленным псевдонимом для лучшей читабельности, что-то вроде (не проверено!!!)
[revsetalias]
new($1,$2) = ancestors($1) - ancestors($2)
[alias]
cl = log -r "new($1,$2)" --style changelog