2008-08-25 24 views
5

Her zaman CVS kontrollü bir dosya ile çalışmak için vimdiff almak için makul derecede zarif bir yol elde etmek istedim. İnternette (en iyi örnek here), CVS'den bir geçici dosyaya düzenlediğiniz dosyayı temel olarak kontrol eden çok sayıda (biraz hacky) betik buldum, ve bu ikisi de vimdiff. Bunların hiçbiri şubeleri hesaba katmaz ve her zaman benim için tamamen işe yaramaz olan MAIN'den çalıştığınızı varsayar.vimdiff ve CVS entegrasyonu

Öyleyse, benim sorum şu: Bu senaryodan daha fazlasını yapan birileri var mı? Ya da bunu yapmazsanız, bunu nasıl yapacakları konusunda herhangi bir fikri olan veya bunu yapan bir şey için ne kadar önemli olduğunu düşündüğünüz özellikler için öneriler var mı? Benim niyetim, hiç kimsenin, kullanmak ya da inşa etmek için halihazırda yapılmış bir çözümü önerememesi durumunda, buradan bir tane inşa etmeye başlıyoruz.

cevap

3

Benzer bir betik üzerinde çalışıyorum: http://github.com/ghewgill/vim-scmdiff (aslında, aynı ataları olabilir). Ben cvs ile scmdiff kullanmadim, ama kontrol ettiginiz branga karsi bir fark yapmalidir. Ayrıca, belirli bir düzeltmeye karşı değişiklik yapmak istediğinizi de belirtebilirsiniz (şununla: D revizyonu). Umarım bu yardımcı olur ve geliştirmeleriniz varsa katkıda bulunabilirsiniz!

+0

d öneririm (komut dosyanızın çatalını GitHub'da değiştirdim;). – jkramer

+0

iyi fikir, birleşmiş! –

+0

Hehe, bu hızlıydı. Teşekkürler! – jkramer

0

Şubeleri hesaba katmak için aramayı cvs olarak değiştirebilirsiniz. Bu zor olmamalı. Tüm işlevi değiştirmek ve şubeyi bir değişken (argüman, oturum, global veya başka bir şekilde) çalışmasını sağlamak daha zordur.

1

@Greg Hewgill: Script için teşekkürler!

hattını 21: - sayfa-down (taşımak için tembel için d

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

Ben Ctrl kullanmak Öyle işte ben değiştirmek yapardım olsa onunla ilgili bir kaç vardı PdDn'ye kadar bu şekilde, Ctrl-h'ye geçmek zorunda kaldı.

hat 112: Ben CVS ile mutlak yolları kullanmak mümkün değil varlık ile sorunları vardı

<   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 

. Buradaki yerel kurulumumuzun bir tuhaflığı mı yoksa küresel bir CVS meselesi mi olduğunu bilmiyorum. Yani, bunun yerine göreli yolu kullanmak için .vimrc koyabilirsiniz, yapılandırılabilir bir değişken yaptım.

Şimdi tam olarak nasıl istediğimi görüyor gibi görünüyor, bu yüzden ben de uzaklaşmaya devam edeceğim ve kırılırken başka bir şey bulabileceğimi, düzeltmeler gönderdiğimi göreceğim.

Düzeltme: Ekleme: Lütfen bu değişiklikleri e-posta adresinize scriptinize eklemek faydalı olabilir. VCS entegrasyonu için aktif olarak tutulan başka bir vim senaryosu olan

0

VCSCommand. CVS/SVN/SVK/git desteği vardır.

Her zaman SVN için kullanıyorum ve hiç bir şikayetim olmadı. Kısayollar mapleader kullanır, bu nedenle mevcut eşleştirmelerin üzerine yazmaları olası değildir.

+0

Aslında VCSCommand'ı zaten kullanıyorum ve kesinlikle fark almaktan çok daha güvenilirdir (örneğin eğer başka bir bağlantıdan geçtiğimi gösteren bir kodun dışındaysa) Ancak, dışarı kontrol kod kümesi), bu yüzden onları görüntülemek için scmdiff gelen yöntemleri ile diffs almak için VCSCommand gelen yöntemleri birleştirmek gerekiyor sanırım ... – sanmiguel

+0

VCSVimDiff/ cv denediniz mi? Bence diffs'i göstermenin mükemmel bir yolu .. – 0x89