2008-08-25 66 views
5

我一直希望能夠得到一個合理優雅的方式讓vimdiff與CVS控制文件一起工作。我在互聯網上找到了很多(有點冒險的)腳本(最好的例子是here),它們基本上檢查出你正在編輯的文件是從CVS到一個臨時文件,而vimdiff則是這兩個文件。這些都沒有考慮到分支機構,並且總是假定你在MAIN工作,對我來說這完全沒用。vimdiff和CVS集成

所以,我的問題是這樣的:有沒有人找到一個體面的解決方案,比這個腳本更多?

否則,沒有人有任何想法,他們將如何實施這一點,或建議你認爲哪些功能對於做這些事情至關重要?我的意圖是,如果沒有人能夠提出一個已經建成的解決方案來使用或構建,我們將從這裏開始構建一個解決方案。

回答

3

我一直在研究類似的腳本:http://github.com/ghewgill/vim-scmdiff(實際上它們可能具有相同的祖先)。我沒有使用cvs的scmdiff,但它應該對你檢出的分支做一個diff。您還可以指定您想要針對特定​​版本進行差異化(使用:D 修訂版)。希望這會有所幫助,並且如果您有改進,隨時做出貢獻!

+0

我建議 d(我在我的GitHub腳本中改變了它)。 – jkramer 2008-09-19 23:02:18

+0

好主意,合併! – 2008-09-20 00:39:18

0

您可以將呼叫更改爲cvs以將分支考慮在內。這不應該很難。有點難以改變整個功能,並使分支工作變量(參數,會話,全局或其他)。

1

@Greg Hewgill: 感謝您的腳本!我有一對夫婦與它的問題了,所以這裏就是我會改變:

線21:

< map <silent> <C-d> :call <SID>scmToggle()<CR> 
-- 
> map <silent> <C-h> :call <SID>scmToggle()<CR> 

我用按Ctrl - d爲向下翻頁(懶得動一直到PdDn),所以不得不切換到Ctrl-h。

行112:

<   let cmd = 'cd ' . g:scmBufPath . ' && ' . g:scmDiffCommand . ' diff ' . g:scmDiffRev . ' ' . expand('%:p') . ' > ' . tmpdiff 
-- 
> if g:scmDiffUseAbsPaths 
>  let cmd = 'cd ' . g:scmBufPath . ' && ' . g:scmDiffCommand . ' diff ' . g:scmDiffRev . ' ' . expand('%:p') . ' > ' . tmpdiff 
> else 
>  let cmd = g:scmDiffCommand . ' diff ' . g:scmDiffRev . ' ' . bufname('%') . ' > ' . tmpdiff 
> endif 

我有沒有能夠使用絕對路徑與CVS的問題。我不知道這是否是我們在這裏設置的本地奇怪,或者它是全球CVS的事情。所以,我創建了一個可配置的變量,您可以將它放在.vimrc中以使用相對路徑。

它現在看起來正是我想要的,所以我會繼續抨擊,看看我是否可以找到其他任何破解,發佈修復,因爲我去。

編輯:忘了補充:如果你覺得他們是值得的,請隨時在github上添加這些改變到你的腳本。

0

VCSCommand是VCS集成的另一個主動維護的vim腳本。它支持CVS/SVN/SVK/git。

我一直使用它的SVN,從來沒有任何投訴。快捷方式使用mapleader,因此它們不太可能覆蓋現有的映射。