Быстрая перемотка ветки в Mercurial - PullRequest
1 голос
/ 19 апреля 2011

По какой-то причине у меня следующая ситуация:

enter image description here

Теперь я хочу избавиться от default_2 и перемотать вперед default до версии 89. Но когда я делаю

hg up -r default
hg transplant 61:89

или

hg transplant -b default_2

Mercurial (1.8.2 + 20110401) просто обновляет мою рабочую копию до версии 89. С расширением mq похоже, что я должен указывать все промежуточные версии по одному.

Итак, вопросы:

  1. Почему не transplant работает? (Рекомендуется здесь: https://www.mercurial -scm.org / wiki / RebaseProject # When_rebase_is_not_allowed )
  2. Есть ли способ быстрой перемотки вперед без особой боли?

Ответы [ 3 ]

4 голосов
/ 19 апреля 2011

Используя Mercurial Queues, вы можете:

hg qinit
hg qimport -r 61:89
hg qpop -a           # unapply all patches
hg up default        # return to your default branch
hg qpush -a          # apply all patches on default
hg qfinish -a        # move applied patches into repo history

ПРИМЕЧАНИЕ: Предполагается, что редакции 61:89 не были переданы в публичный репозиторий.Указанные mq команды изменят историю.Если эти ревизии уже были переданы, тогда было бы лучше просто закрыть ветку default2 и затем объединить default2 в default.

0 голосов
/ 16 июня 2016

try:

 hg branch --force default

воссоздает новую ветвь с именем по умолчанию

0 голосов
/ 03 ноября 2012

Начиная с Mercurial 2.0, вы можете использовать команду graft (встроенная команда в значительной степени заменяет расширение трансплантат ):

hg graft 61:89

См. Такжевопрос о различиях между трансплантатом и трансплантатом .

Обратите внимание, что причина, по которой Mercurial не поддерживает фактические ускоренные перемотки между именованными ветвями, заключается в том, что имя ветви является частью фиксации Mercurialобъект.См. Также эту статью , в которой подробно описывается модель ветви Mercurial .

...