2013-10-30 81 views
11

我想知道在svn中如何合併可以變得簡單。svn:使用vim合併衝突

這個page提到可以使用外部工具進行合併。 可以將vim用作外部合併工具嗎?

一些額外的要求:

  1. 文件應水平/垂直分割給一個更好的視野。
  2. 窗口標題應適當設置。

例如:如在 enter image description here

+1

@romainl:Google把我帶到了這個頁面,所以我真的感謝那個傢伙。 – ereOn

回答

25

步驟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:

編輯並添加以下行:

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

第3步:

,當你得到以下的svn合併命令,選擇選項 '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 
+1

我現在非常愛你....這很美麗。 – ldog

+1

如果永久不需要此更改,也可以通過設置環境變量SVN_MERGE =/path/to/merger.sh來完成 – Michael

+0

如何使用此腳本解決具有來自「svn」衝突的凌亂工作空間更新「?我有一堆.r *,.mine文件,但不知道如何讓我的工作區重新處於乾淨狀態。 – Christopher