Я перевел вопрос на #mercurial
на irc.freenode.net пару дней назад. mpm
(автор Mercurial) дал своего рода ответ (это был только половина ответа, поэтому я не сразу передал его здесь). Он сказал, что можно сделать что-то, когда вы позволите Mercurial автоматически объединять файлы (и вставлять маркеры слияния <<<<
и >>>>
в случае возникновения конфликтов).
Затем используйте инструмент слияния, который знает об этих маркерах: это позволит вам разрешить их все сразу, а не делать это для каждого файла отдельно. Отправной точкой будет страница конфигурации инструмента слияния . Это объясняет, что
[ui]
merge = internal:merge
заставит Mercurial вставлять маркеры слияния. Здесь я проверил это, создав два файла x.txt
и y.txt
, которые я затем изменил с конфликтующими изменениями в двух клонах. Слияние просто дало:
% hg merge
merging x.txt
warning: conflicts during merge.
merging x.txt failed!
merging y.txt
warning: conflicts during merge.
merging y.txt failed!
0 files updated, 0 files merged, 0 files removed, 2 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
Все файлы были обработаны за один раз, мне не нужно было ничего подтверждать для каждого файла, как вы описали.
Файлы теперь содержат маркеры слияния, подобные этому:
% cat x.txt
foo
<<<<<<< local
hehe
=======
foobar
>>>>>>> other
Следующий шаг - найти инструмент, который может взять дерево каталогов с такими файлами и позволить вам их разрешить. Я посмотрел на kdiff3, но не понял, как использовать его для работы только с одним файлом, он, кажется, очень сосредоточен на сравнении пар файлов / каталогов.
Я не уверен, насколько эта половина ответа поможет вам - может быть, вы тоже застряли в этой точке? Но я надеюсь, что это поможет другим, кто хочет вставить маркеры слияния во все файлы, а затем разрешить конфликты вручную.