Подтвердить что ты не робот

Ретроактивное название ветвления в Mercurial

Есть ли способ связать кучу Mercurial наборов изменений с именованной ветвью после того, как они были зафиксированы, т.е. ретроактивно?

4b9b3361

Ответ 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

Не полное решение, но без повторной записи истории; вы можете пометить последний набор изменений в неназванной ветке. Если вы никогда не привязываетесь от этого, тег должен всплывать. Если вам нужно перерезать, вы можете перейти к именованной ветке после отмеченного набора изменений.