Фильтр Revset для отображения слияния / разделения именованных ветвей

Я хочу отфильтровать коммиты в TortoiseHg таким образом, чтобы показывались только коммиты:

  1. Иметь по крайней мере один родительский коммит в другой названной ветви; или же
  2. Иметь по крайней мере один дочерний коммит в другой названной ветви; или же
  3. Исходная отправная точка (коммит 0); или же
  4. Являются ли глава именованной ветви или закрывающий коммит именованной ветви;

В основном: как я могу получить сжатый график, показывающий, как текут именованные ветви?

В качестве примера я хочу сжать граф изменений такого рода:

Пример ревизионного графика

В форму, где они опущены:

  • Ред 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())

Это должно дать вам все наборы изменений слияния, непосредственных родителей слияний, всех наборов изменений точек ветвления и прямых потомков точек ветвления.

В примере в вашем посте с вопросом вы включаете потомков наборов изменений слиянием и родителей точек ветвления из-за сложного характера настроенных вами наборов ревизий. Разбивая их на части, результаты немного сокращаются.

Другие вопросы по тегам