svn:使用vim来合并冲突

m.d*_*han 12 svn vim

我正在尝试看看svn中的合并是如何变得容易的.

页面提到可以使用外部工具进行合并.vim可以用作外部合并工具吗?

一些额外要求:

  1. 文件应水平/垂直分割,以提供更好的视图.
  2. 应适当设置窗口标题.

例如:如 在此输入图像描述

m.d*_*han 28

步骤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"
Run Code Online (Sandbox Code Playgroud)

第2步:

编辑 .subversion/config并添加以下行:

merge-tool-cmd = /path/to/merger.sh
Run Code Online (Sandbox Code Playgroud)

第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
Run Code Online (Sandbox Code Playgroud)

第4步:现在vim将以差异模式打开,包含3个文件 - 我的,他们的并合并.在合并文件中进行必要的更改,然后执行save和exit(:wqa).

第5步:

现在,下面的选项将再次出现,现在选择' r'(接受合并版本).

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