2008-08-25 2 views
5

필자는 항상 CVS 제어 파일에서 vimdiff를 얻는 방법을 상당히 우아하게하고 싶었습니다. 나는 기본적으로 CVS에서 임시 파일로 편집하는 파일을 체크 아웃하는 인터넷 (가장 좋은 예제 here)과 수많은 vimdiff (둘다)에 대해 수많은 스크립트를 발견했다. 이들 중 어느 것도 지점을 고려하지 않으며 항상 MAIN에서 일한다고 가정합니다. MAIN은 나를 위해 전혀 쓸모가 없습니다.vimdiff와 CVS 통합

그래서 내 질문은 이것입니다 :이 스크립트보다 많은 것을하는 괜찮은 해결책을 찾은 사람이 있습니까?

그렇지 않은 사람이라면 누구나 어떻게 구현할 것인지 또는 어떤 기능에 대해 제안 할 것인지 결정할 수 있습니까? 내 의도는 아무도 사용 또는 빌드에서 이미 빌드 된 솔루션을 제안 할 수 없다면 여기서부터 빌드하기 시작합니다.

답변

3

나는 비슷한 스크립트를 여기에서 작성했습니다 : http://github.com/ghewgill/vim-scmdiff (사실 그들은 동일한 조상을 가지고있을 수 있습니다). 나는 cvs에서 scmdiff를 사용하지 않았지만 체크 아웃 한 지점에 대해 diff를 수행해야한다. 또한 특정 개정판에 대해 diff를 지정하도록 지정할 수 있습니다 (D 개정판 포함). 다행히도 이것이 도움이되며 개선이 있다면 기꺼이 공헌하십시오!

+0

나는 d (나는 GitHub에서 스크립트를 포크로 바꿨다.)를 제안했다. – jkramer

+0

좋은 아이디어, 병합! –

+0

Hehe, 빠르다. 감사! – jkramer

0

cvs으로 전화를 변경하여 분기를 고려할 수 있습니다. 그건 어렵지 않아야 해. 전체 함수를 변경하고 분기 작업을 변수 (인수, 세션, 전역 또는 기타)로 만드는 것이 더 어렵습니다.

1

@Greg Hewgill : 스크립트 감사합니다!

라인 21 : : - 페이지 다운 (이동하기에 너무 게으른에 대한 D

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

내가 Ctrl 키를 사용합니다 그래서 여기에 내가 바꿀 것 무엇을, 비록 문제의 몇했다 Pddn에 이르기까지), Ctrl-h로 전환해야했습니다.

라인 112 : 나는 CVS와 절대 경로를 사용 할 수 없다는 문제가 있었다

<   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 일인지 나는 모른다. 따라서 상대 경로를 사용하도록 .vimrc에 넣을 수있는 구성 가능한 변수를 만들었습니다.

지금은 내가 원하는 방식으로 작동하는 것처럼 보이므로 계속해서 강타하고 내가 갈 때 수정 사항을 게시하고 휴식을 찾을 수 있는지 확인합니다.

편집 : 추가하는 것을 잊었습니다. github의 스크립트에 이러한 변경 사항을 추가하면 언제든지 가치 있다고 생각됩니다.

0

VCSCommand은 VCS 통합을 위해 활발하게 유지 관리되는 vim 스크립트입니다. 그것은 CVS/SVN/SVK/git을 지원합니다.

나는 항상 SVN을 사용하며 어떤 불만도 없었습니다. 바로 가기는 mapleader을 사용하므로 기존 매핑을 덮어 쓰지는 않습니다.

+0

실제로 VCSCommand를 사용하고 있으며, diffs를 얻기 위해 scmdiff보다 확실히 신뢰할 수 있습니다 (예 : 체크 아웃 한 디렉토리에 다른 심볼릭 링크를 통해 연결 한 경우). 체크 아웃 된 코드 집합), 그래서 내가 그들을 표시 scmdiff에서 메서드와 diffs 점점 VCSCommand에서 메서드를 결합해야 할 것 같아요 ... – sanmiguel

+0

VCSVimDiff/ cv 시도 해 봤나? 나는 diffs를 보여주는 완벽한 방법이라고 생각합니다. – 0x89