2012-04-10 4 views
2

Mercurial документов о том, что ртутном делает, когда он должен сделать 3Way слияние:Have Mercurial использовать инструмент пользовательского слияния для своих собственных слияний

По умолчанию Mercurial будет пытаться сделать классический 3way слияние на текст файлы, прежде чем пытаться использовать внешний инструмент.

Когда он вызывает внешний инструмент, это всегда «ручное слияние».

Не все инструменты слияния создаются одинаково, и, как оказалось, мой инструмент слияния по выбору (Araxis Merge) часто может выполнять автоматическое слияние из трех файлов, где инструмент слияния Mercurial не смог сделать это ,

Это приводит к сценарию крупных слияний, где может быть куча файлов сливающихся чисто, сделано внутренним mergetool ¯hG, а затем некоторые другие файлы не сливаются чисто , но может быть, если рт.ст. позволит мне указать его mergetool. Я нахожу это, чтобы сделать большие слияния очень неэффективными, так как вам нужно много переключать контекст: hg всплывает мой инструмент слияния, я думаю «о, черт, конфликт», чтобы потом осознать «о, подождите, нет конфликта вообще»

Интересно, если я что-то упустил здесь, или нет способа заставить hg использовать специальный инструмент слияния для его автоматических попыток сделать слияния.

ответ

1

Я думаю, что вы ищете переключатель для того чтобы сделать Araxis Слияние близко автоматически, если он может автоматически объединиться. Я посмотрел на command line reference и их SCM integration document, но на самом деле я не уверен, какой переключатель он будет. Тебе придется поэкспериментировать.

С точки зрения Mercurial нет такой вещи, как «ручное слияние». Mercurial пытается сначала объединиться (так называемый шаг «premerge»), и если это не удается, он ищет внешний инструмент. Слияние все равно может быть полностью автоматическим, если этот инструмент существует с кодом выхода 0 (успешный выход). Затем Mercurial рассмотрит успешное слияние и перейдем к следующему файлу. В зависимости от инструмента вы вообще этого не заметите: Mercurial просто запускает инструмент в фоновом режиме, и вам предлагается только действие, когда есть серьезный конфликт слияния.

0

Вы можете использовать специальный инструмент для слияния с Mercurial. help merge-tools показывает порядок, в котором инструменты выбраны для запуска:

1. If a tool has been specified with the --tool option to merge or 
    resolve, it is used. If it is the name of a tool in the merge-tools 
    configuration, its configuration is used. Otherwise the specified tool 
    must be executable by the shell. 
2. If the "HGMERGE" environment variable is present, its value is used and 
    must be executable by the shell. 
3. If the filename of the file to be merged matches any of the patterns in 
    the merge-patterns configuration section, the first usable merge tool 
    corresponding to a matching pattern is used. Here, binary capabilities 
    of the merge tool are not considered. 
4. If ui.merge is set it will be considered next. If the value is not the 
    name of a configured tool, the specified value is used and must be 
    executable by the shell. Otherwise the named tool is used if it is 
    usable. 
5. If any usable merge tools are present in the merge-tools configuration 
    section, the one with the highest priority is used. 
6. If a program named "hgmerge" can be found on the system, it is used - 
    but it will by default not be used for symlinks and binary files. 
7. If the file to be merged is not binary and is not a symlink, then 
    "internal:merge" is used. 
8. The merge of the file fails and must be resolved before commit. 

Более подробную информацию можно найти в help config - искать merge-tools и merge-patterns

Смежные вопросы