Есть ли способ связать кучу Mercurial наборов изменений с именованной ветвью после того, как они были зафиксированы, т.е. ретроактивно?
Ретроактивное название ветвления в Mercurial
Ответ 1
Я просто хотел сделать это, и нашел решение, которое я нашел. Прошел год с тех пор, как вопрос был изначально задан, это может объяснить, почему я теперь могу найти решение. Недостаток заключается в том, что вы создаете дополнительную ревизию в этом процессе, но для меня это было слишком плохо.
Сначала вернитесь туда, где вы хотите создать ветку. В моем случае, я действительно хотел запустить новый root (потому что я не был очень разумным, когда я начал репозиторий, но в любом случае), поэтому Im update to null. Вероятно, вы хотите начать где-то еще, это зависит от вашей ситуации.
$ hg update null
Затем создайте ветвь.
$ hg branch blah
$ hg commit -m "Created blah branch."
Затем мы переустанавливаем все сделанные нами коммиты на нашу новую ветку:
$ hg rebase -s SOURCE -d DEST
ИСТОЧНИК здесь должен быть первым фиксатором, который вы сделали в коммитах, из которых вы хотите создать ветку, и DEST должен быть фиксацией, где была создана ветка (той, которую мы совершили выше).
Ответ 2
Нет, имена ветвей являются частью набора изменений (это действительно похоже на метку, которую вы добавляете к фиксации), это означает, что хэш хешета зависит от имени ветки.
Таким образом, единственный способ изменить это ретроактивно - переписать историю (которая не очень хорошо работает, если вы переместили свои изменения в другом месте, так как вам придется переписывать каждое репо с изменениями).
Чтобы переписать историю, вы можете использовать, например, mq.
Ответ 3
Не полное решение, но без повторной записи истории; вы можете пометить последний набор изменений в неназванной ветке. Если вы никогда не привязываетесь от этого, тег должен всплывать. Если вам нужно перерезать, вы можете перейти к именованной ветке после отмеченного набора изменений.