hg автоматически сливается с diff3
Рассмотрим проект Hg с двумя центральными ветвями / клонами - например, DEV и PRD. Когда кто-то добавляет исправление в PRD, автоматический сценарий на центральном сервере переходит к DEV и извлекает новые изменения. Затем он пытается объединить исправление с DEV.
Проблема в том, что инструмент слияния, встроенный в Hg, ужасен - как только в одном и том же файле происходят параллельные изменения, он не работает. Возьмите следующий пример:
parent:3,7c
four
five
six
seven
child1:3,7c
four
five5
six6
seven7
child2:3,7c
fourmore
five
six
more
seven
Как видите, здесь нет реальных конфликтов. Если мы выполняем слияние локально с помощью kdiff, это решает этот простой случай без участия пользователя!
Я бы хотел, чтобы центральный сервер управлял этими делами. Я думал об использовании kdiff3 в режиме без вывода сообщений, но я не могу установить на него kdiff3 (это система только для CLI, к которой у нас даже нет прав администратора), но, возможно, есть способ подключить diff3 к hg merge, чтобы он можно решить простые случаи, как это? Я попытался установить "[ui] /n merge = diff3" в hgrc, но он просто выплевывает три версии в стандартный вывод. Я пропустил некоторые дополнительные настройки? Или есть более легкий / лучший инструмент?
большое спасибо
1 ответ
Использовать diff3
как инструмент слияния, вам нужно добавить
[merge-tools]
diff3.args = $local $base $other -m > $output
в ваш файл конфигурации. При необходимости вы можете установить приоритет, см. Вики. Вы также найдете более сложные рецепты для использования diff3
там
Тем не менее, я проверил, как diff3
обрабатывает ваш сценарий с изменениями в соседних строках, и, как и Mercurial, он также отказался от слияния. Различные инструменты слияния имеют разные пороги для того, что они считают "конфликтом", и кажется, что KDiff3 более щадящий, чем Mercurial и diff3
,
Я предлагаю вам позволить разработчику, который делает исправление на PRD
нести ответственность за слияние в DEV
где он имеет доступ к таким инструментам, как KDiff3. Автоматическое слияние на сервере, как правило, считается плохим - слияния должны быть проверены только человеком, прежде чем вы их совершите. Это не так много дополнительной работы после исправления.