12

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

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

一些额外的要求:

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

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

4

1 回答 1

29

第1步:

保存以下脚本,例如:merge.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 模式打开,其中包含 3 个文件 - 我的、他们的和合并的。在合并文件中进行所需的更改,然后保存并退出 ( :wqa)。

第 5 步:

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

Select: (p) postpone, (df) diff-full, (e) edit,
            (mc) mine-conflict, (tc) theirs-conflict,
            (s) show all options: r
于 2013-10-30T09:49:00.277 回答