【问题标题】:svn: using vim to merge conflictssvn:使用vim合并冲突
【发布时间】:2013-10-30 09:49:00
【问题描述】:

我正在尝试看看如何让 svn 中的合并变得简单。

这个page 提到可以使用外部工具进行合并。 vim可以作为外部合并工具吗?

一些额外的要求:

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

例如:如

【问题讨论】:

  • @romainl:谷歌把我带到了这个页面,所以我真的很感谢这个人。

标签: svn vim


【解决方案1】:

第 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

【讨论】:

  • 如果永久不需要这种改变,也可以通过设置环境变量SVN_MERGE=/path/to/merger.sh来完成
  • 我如何使用这个脚本来解决与“svn update”冲突的混乱工作区?我有一堆 .r*、.mine 文件,但不知道如何让我的工作区再次恢复到干净状态。
  • 这个答案的补充帮助了我:stackoverflow.com/questions/8312089/…
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 2010-11-17
  • 2013-10-27
  • 2013-01-02
  • 1970-01-01
  • 2013-04-28
  • 2010-09-24
  • 1970-01-01
相关资源
最近更新 更多