Фильтр Revset для отображения слияния / разделения именованных ветвей
Я хочу отфильтровать коммиты в TortoiseHg таким образом, чтобы показывались только коммиты:
- Иметь по крайней мере один родительский коммит в другой названной ветви; или же
- Иметь по крайней мере один дочерний коммит в другой названной ветви; или же
- Исходная отправная точка (коммит 0); или же
- Являются ли глава именованной ветви или закрывающий коммит именованной ветви;
В основном: как я могу получить сжатый график, показывающий, как текут именованные ветви?
В качестве примера я хочу сжать граф изменений такого рода:
В форму, где они опущены:
- Ред 15 (зеленый)
- Ред. 14 (зеленый)
- Ред 13 (синий)
- Rev 10 (синий)
- Ред 7 (синий)
- Ред 4 (красный)
- Ред 1 (синий)
Я попытался использовать конкретное предложение, которое я получил в этом ответе на SoftwareRecs:
children(branchpoint() or merge()) or parents(branchpoint() or merge())
Однако, это не работает так, как я хочу, но все же включает в себя несколько коммитов, в которых нет подробностей о ветвлении, и обрезает, например, короткую ветку по умолчанию, показывая слишком ранний коммит:
Как я могу изменить фильтр revset, чтобы получить более сжатый график? Это вообще возможно? В качестве неоптимального решения, я думаю, было бы также приемлемо, если бы не делалось различий между именованными ветвями или нет.
1 ответ
Это должно дать вам то, что вы ищете, минус сравнение между именами веток:
merge() or parents(merge()) or branchpoint() or children(branchpoint())
Это должно дать вам все наборы изменений слияния, непосредственных родителей слияний, всех наборов изменений точек ветвления и прямых потомков точек ветвления.
В примере в вашем посте с вопросом вы включаете потомков наборов изменений слиянием и родителей точек ветвления из-за сложного характера настроенных вами наборов ревизий. Разбивая их на части, результаты немного сокращаются.