2010-06-28 59 views
2

我剛剛在SVN中工作時遇到了衝突,我發現自己錯過了Mercurial的一些功能。在Mercurial中,我將vim -d設置爲我的差異工具。我想知道是否有辦法讓SVN以類似的方式工作?沿着線的東西:使用vim進行svn衝突的簡單方法?

$ svn resolve whatever.py 

這將啓動vim(diff模式),讓我解決了文件,然後做一個svn resolved清理。我只在CLI中工作(主要是通過SSH),所以不需要應用圖形化的差異工具。

這樣的事情是否存在?

更新:
這可能是值得包括在我的過程中。我編輯了一個文件(whatever.py),保存了它,並完成了一個svn update,其他人也更改了該文件。所以我svn stat看起來像這樣:

?  whatever.py.mine 
?  whatever.py.r7822 
?  whatever.py.r7908 
C  whatever.py 
+0

你看過svndiff嗎? PS 只是谷歌搜索,發現這對於VIM:http:// zevv。nl/play/code/vimscripts/ – pmod 2010-06-28 20:20:42

+0

這似乎是將'HEAD'與當前比較。沒有解決衝突。我可能會下載它,但它不能解決這個問題。 – 2010-06-28 20:38:35

+1

http://stackoverflow.com/questions/19678860/svn-using-vim-to-merge-conflicts/19678861#19678861 – 2013-10-30 09:52:33

回答

3

每當我從svn update衝突,我要了半打的選擇,其中之一是編輯有問題的文件。也許你需要更新版本的Subversion。我正在運行1.6.9。

+0

這是一個漂亮的舊版本的顛覆,但問題仍然適用,如果我決定推遲解決這個問題問題。 – 2010-06-28 20:37:09

+0

所以......你說得對。唯一缺少的是實際執行合併的命令。這是'svn merge'。一旦我得到更新的版本,它的工作。把它扔在那裏,這樣我就可以標記出來。 = - ] – 2010-06-28 21:16:46

1

在更新版本的Subversion CLI客戶端中,您可以設置環境變量SVN_MERGE=vim -d,然後選擇l以在svn更新期間出現衝突菜單時啓動外部工具。

我不是100%確定如果svn傳遞的參數順序與vim -d所需的參數順序匹配,那麼您可能必須編寫一個包裝腳本,而不是直接調用vim。

svn手冊當然有完整的細節。

1

嘗試設置環境變量EDITORVISUAL Vim的

爲龜
+0

這適用於提交等,但它不會改變差異。我已經使用vim作爲我的'編輯器'。 – 2010-06-29 04:29:34

4

設置vim作爲比較工具,爲Win32(對我的工作):

1)烏龜SVN->設置 - >外部Programms- >比較工具

組外部C:\程序\ gVim的\ vim73 \的gvim.exe -d

組外部C:\程序\ gVim的\ vim73 \的gvim.exe -d

2)統一的diff查看器

C:\程序\ gVim的\ vim73 \的gvim.exe

3)合併工具

「C:\程序\ gVim \ vim73 \ gvim.exe「-f -d -c」wincmd J「-c」resize 22「%merged%theirs%mine mine base

+0

我已經用這個合併:'「C:\ Program Files(x86)\ Vim \ vim73 \ gvim.exe」-d --cmd「set lines = 999 columns = 999」-c「wincmd J」 %合併%%他們%%基地%mine' – 2012-12-12 00:04:23