Frage

Ich wollte schon immer eine einigermaßen elegante Möglichkeit finden, vimdiff mit einer CVS-gesteuerten Datei zum Laufen zu bringen.Ich habe im Internet zahlreiche (etwas abgedroschene) Skripte gefunden (bestes Beispiel). Hier), die grundsätzlich die Datei, die Sie bearbeiten, aus CVS in eine temporäre Datei auschecken und die beiden vimdiffern.Keines davon berücksichtigt Zweige und es wird immer davon ausgegangen, dass Sie von MAIN aus arbeiten, was für mich völlig nutzlos ist.

Meine Frage lautet also:Hat jemand da draußen eine anständige Lösung dafür gefunden, die mehr kann als dieses Skript?

Oder hat jemand, falls dies nicht gelingt, eine Idee, wie er dies umsetzen könnte, oder Vorschläge, welche Funktionen Ihrer Meinung nach für etwas, das dies tut, von entscheidender Bedeutung sind?Meine Absicht ist es, dass wir, wenn niemand eine bereits erstellte Lösung zur Verwendung oder zum Aufbau vorschlagen kann, von hier aus mit der Entwicklung beginnen.

War es hilfreich?

Lösung

Ich habe hier an einem ähnlichen Skript gearbeitet: http://github.com/ghewgill/vim-scmdiff (Tatsächlich könnten sie die gleiche Abstammung haben).Ich habe scmdiff nicht mit cvs verwendet, aber es sollte einen Unterschied zu dem Zweig machen, den Sie ausgecheckt haben.Sie können auch angeben, dass Sie einen Unterschied zu einer bestimmten Revision machen möchten (mit :D Revision).Hoffentlich hilft das, und Sie können gerne einen Beitrag leisten, wenn Sie Verbesserungen haben!

Andere Tipps

@Greg Hewgill:Danke für das Skript!Allerdings hatte ich ein paar Probleme damit, deshalb würde ich Folgendes ändern:

Zeile 21:

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

ich benutze Strg-D für Page-Down (zu faul, um ganz auf PdDn umzusteigen), also musste ich auf Strg-h umschalten.

Zeile 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

Ich hatte Probleme damit, dass ich mit CVS keine absoluten Pfade verwenden konnte.Ich weiß nicht, ob das an unserer lokalen Einrichtung hier liegt oder ob es sich um eine globale CVS-Sache handelt.Daher habe ich eine konfigurierbare Variable erstellt, die Sie in Ihre .vimrc-Datei einfügen können, um stattdessen den relativen Pfad zu verwenden.

Es scheint jetzt genau so zu funktionieren, wie ich es wollte, also werde ich weiter herumbasteln und schauen, ob ich noch etwas finden kann, das kaputt geht, und dabei Korrekturen posten.

Bearbeiten:Ich habe vergessen hinzuzufügen:Bitte zögern Sie nicht, diese Änderungen zu Ihrem Skript auf GitHub hinzuzufügen, wenn Sie der Meinung sind, dass sie sich lohnen.

Sie können den Anruf in ändern cvs Branchen zu berücksichtigen.Das sollte nicht allzu schwer sein.Etwas schwieriger wäre es, die gesamte Funktion zu ändern und den Zweig zu einer Variablen zu machen (Argument, Sitzung, global oder anders).

VCSCommand ist ein weiteres aktiv gepflegtes Vim-Skript für die VCS-Integration.Es unterstützt CVS/SVN/SVK/git.

Ich verwende es ständig für SVN und hatte nie Beschwerden.Die Tastenkombinationen verwenden mapleader, Daher ist es unwahrscheinlich, dass sie vorhandene Zuordnungen überschreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top