Примечание. На описанный здесь сценарий нет ответа в Переполнение стека: полностью ручное слияние Mercurial.
Я объясню свой запрос на примере. Предположим, я запускаю репозиторий Mercurial для разработки автомобиля:
C:\Car$ dir
Car.cpp
Car.h
Я работаю над дизайном автомобиля довольно давно, и репозиторий выглядит так:
r0-r1-...-r100-(default)
В какой-то момент я разветвил default на SolarCarBranch, чтобы параллельно работать над автомобилем на солнечной энергии:
C:\SolarCar$ dir
Car.cpp
Car.h
Solar.cpp
Solar.h
Еще через некоторое время репозиторий выглядит так:
r0-r1-...-r100-...-r200-(default)
\--r101-...-r201-(SolarCarBranch)
Как объединить SolarCarBranch с по умолчанию?
Обратите внимание на следующие сложности в слиянии, которое я хочу:
- Я смогу продолжить работу как с по умолчанию, так и с SolarCarBranch после слияния.
- В
Car.cpp
иCar.h
в SolarCarBranch могут быть исправления эффективности использования топлива, которые я хочу сделать по умолчанию, однако мне не нужны все изменения в этих файлах. Итак, я хочу выбрать те изменения, которые я хочу включить в по умолчанию во время слияния (так называемое ручное слияние). - Я не хочу, чтобы
Solar.cpp
иSolar.h
появлялись в по умолчанию. Возможно, мир еще не готов к автомобилям на солнечных батареях. ;-)
Что я узнал:
- Это возможно с помощью
hg merge SolarCarBranch
- Этого можно добиться, установив
kdiff3.premerge=False
вMercurial.ini
- Я не знаю, как этого добиться, поскольку
premerge=False
по-прежнему объединяет/копируетSolar.cpp
иSolar.h
в по умолчанию, не спрашивая моего разрешения.