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. Автоматическое слияние на сервере, как правило, считается плохим - слияния должны быть проверены только человеком, прежде чем вы их совершите. Это не так много дополнительной работы после исправления.

Другие вопросы по тегам