svn: использование vim для объединения конфликтов

Я пытаюсь понять, как слияние в svn можно упростить.

На этой странице упоминается, что внешние инструменты могут использоваться для слияния. Можно ли использовать vim как инструмент внешнего слияния?

Некоторые дополнительные требования:

  1. Файлы должны быть разделены горизонтально / вертикально, чтобы обеспечить лучшее представление.
  2. Заголовки окон должны быть установлены соответствующим образом.

например: как в введите описание изображения здесь

Шаг 1:

Сохраните следующий сценарий, например: merger.sh:

#!/bin/sh # BASE=${1} THEIRS=${2} MINE=${3} MERGED=${4} WCPATH=${5} vimdiff $MINE $THEIRS -c ":botright split $MERGED" -c ":diffthis" -c "setl statusline=MERGED | wincmd W | setl statusline=THEIRS | wincmd W | setl statusline=MINE" 

Шаг 2:

Измените .subversion/config и добавьте следующую строку:

 merge-tool-cmd = /path/to/merger.sh 

Шаг 3:

Когда вы получаете следующие параметры во время команды svn merge, выберите опцию ' l '. Это запуск внешнего инструмента для разрешения конфликтов.

 Conflict discovered in 'main.h'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: l 

Шаг 4: Теперь vim будет открыт в режиме diff с тремя файлами – моими, их и объединенными. Внесите необходимые изменения в объединенный файл и сохраните и выйдите ( :wqa ).

Шаг 5:

Теперь ниже параметров появится снова, выберите ' r ' (чтобы принять объединенную версию).

 Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: r