Если между текущей родительской ревизией и целевой ревизией существует линейный путь, вы можете просто выполнить
hg update right-branch
, и Mercurial объединит изменения в вашей рабочей копии с целевой ревизией.
Это делается с помощью механизма полного слияния , поэтому такие вещи, как переименования, учитываются, и вы получаете трехстороннюю программу слияния в случае конфликтов.В подходах, основанных на полках и diff, этого нет, и вам необходимо вручную разрешать конфликты, используя файлы .rej
.Вы даже можете увидеть текущий статус слияния с помощью hg resolve --list
и повторно объединить выбранные файлы, поскольку Mercurial создает необходимые резервные копии для вас.
Если нет линейного пути, вы получите это предупреждение:
abort: crosses branches (merge branches or use --clean to discard changes)
Затем вы можете получить то, что хотите, сначала обновившись до общего предка, а затем снова обновившись вперед.Я не уверен на 100%, почему мы выдаем это предупреждение, но поиск в архивах списка рассылки должен дать вам ответ, если вам интересно.