Продолжаю смотреть на поведение mercurial при слиянии изменений. Тест второй, copy + merge. Простое дублирование одинаковой информации вряд ли когда-либо понадобится, поэтому я решил рассмотреть ситуацию, когда часть содержимого черезчур разросшегося модуля выносится в отдельный модуль.
Для начала создаём репозиторий trunk с одним модулем module.py:
def func1():
return 'initial'
def func2():
return 'initial'
и клонируем trunk в branch. Теперь изменяем функции в trunk:
def func1():
return 'changed'
def func2():
return 'changed'
В branch мы выносим функцию func2
в модуль submodule.py. Но для того, чтобы mercurial "знал", откуда появилась новая функция в submodule.py, мы выполняем команду hg copy module.py submodule.py и удаляем из первого func1, а из второго func2.Остаётся только перелить изменения из trunk и сделать merge. Однако теперь процесс проходит не так гладко: изменения обоих функций успешно попадают куда нужно, но изменения второй отсутствующей функции mercurial для обоих подмодулей считает конфликтом, который и предлагает разрешить вручную. Впрочем, в данном случае всё разрешение конфликта сводится к удалению ненужной функции. К сожалению, такую операцию, как перенос части кода из одного файла в другой существующий, mercurial никак не позволяет отработать.
2 комментария:
Не смотрели - изменилось что-нибудь за прошедшие полтора года?
Судя по всему ничего не поменялось. Да я и не вижу, как можно изменить поведение в лучшую сторону.
Отправить комментарий