Похоже, что у мертвых голов есть и обратная сторона, которая не решается в более поздних версиях Mercurial.
Предположим, у вас много закрытых головок ветвей и только одна незамкнутая активная ветвь.Предположим далее, что в какой-то более поздний момент вы делаете плохой коммит (rev bad) поверх незакрытой головы (rev good).Прежде чем вы нажмете, вы хотите клонировать свой репозиторий, отбросив этот плохой коммит.Обычно это просто сделать -
hg clone --rev good BadRepo FixedRepo
К сожалению, это не тянет закрытые ветви веток, так как они не являются хорошими предками rev.Все те ветви, которые были закрыты, не будут закрыты в клонированном хранилище.Я проверял это с Mercurial 2.3.1.
Мысли?
ps Расширение hgflow закрывает функцию и освобождает ветви перед слиянием.Это позволяет избежать проблемы с закрытыми головами.
Что касается клона, являющегося уродливым подходом, он работал довольно хорошо и легко для меня.Клон заменяет хранилище плохим коммитом.Клон является локальным усилием.Это плохое хранилище просто отбрасывается.Я обычно понимаю, что вскоре после этого сделал плохой коммит.
Опция -b - это просто способ перефразировать --rev, используя имя ветви вместо идентификатора набора изменений.Использование опции --rev действительно вытягивает все топологическое дерево под ревизией.Если ревизия является главой ветви, то клон --rev такой же, как клон -b.-b оставляет ту же проблему, что я описал с опцией --rev.Ветви, которые были закрыты в исходном хранилище, вновь открываются, если их оставить в качестве голов.
Если шаблон должен оставить закрытые головки, то они скоро значительно превысят количество соответствующих голов.Вставить эти замыкания в клон довольно сложно, если только вы не сделаете полный клон.