Bearbeiten Sie die Datei $HOME/.subversion/config
es enthält also die Zeile:
diff-cmd = <your favorite diff application>
Einige Diff-Apps unterstützen svn. Beispiel:diff-cmd = meld
sollte gut funktionieren. Allerdings vimdiff
ist nicht einer von ihnen. Der Grund dafür ist svn diff
gibt die zu vergleichenden Dateien als 6. und 7. Argument an und nicht wie üblich als 1. und 2. Argument. Was die meisten Leute in dieser Situation also tun, ist Folgendes:
Erstellen Sie ein Wrapper-Skript :
#!/bin/sh
/usr/bin/vimdiff ${6} ${7}
Speichern Sie es beispielsweise unter $HOME/bin/svndiffwrap.sh
Vergessen Sie nicht, es ausführbar zu machen chmod +x $HOME/bin/svndiffwrap.sh
.
Machen Sie es zum Befehl svn diff :
in $HOME/.subversion/config
:
diff-cmd = /home/<username>/bin/svndiffwrap.sh
Hinweis :Einige SVN-Clients unterstützen keine Pfade, die $HOME
verwenden Umgebungsvariable. Daher ist es sinnvoll, den vollständigen Pfad anzugeben.
Gefunden unter:http://blog.tplus1.com/index.php/2007/08/29/how-to-use-vimdiff-as-the-subversion-diff-tool/
Dieser Blogbeitrag übernimmt das Skript direkt aus dem Beispiel für externe Diff-Tools des SVN-Buchs:
diffwrap.sh
#!/bin/sh
# Configure your favorite diff program here.
DIFF="/usr/local/bin/vimdiff"
# Subversion provides the paths we need as the sixth and seventh
# parameters.
LEFT=${6}
RIGHT=${7}
# Call the diff command (change the following line to make sense for
# your merge program).
$DIFF $LEFT $RIGHT
# Return an errorcode of 0 if no differences were detected, 1 if some were.
# Any other errorcode will be treated as fatal.
Hinweis: Dies setzt voraus, dass Ihr vimdiff
ist in /usr/local/bin
, für mich war es in Fedora in /usr/bin
. Wenn Sie es nicht finden können, führen Sie Folgendes aus:
$ whereis vimdiff
Dann in ~/.subversion/config
:
[helpers]
...
diff-cmd = /home/<username>/bin/diffwrap.sh
vimdiff <(svn diff)
<()
wird als Prozesssubstitution bezeichnet, die eine Pseudodatei aus der Ausgabe von svn diff
erstellt für vimdiff
zu konsumieren.
Sie können einen Shell-Alias wie folgt erstellen:alias svndiff='vimdiff <(svn diff)'
Ähnliche Antwort
PS - das ist die einfachste Lösung, die ich noch finden muss; es hat mein Leben (relativ gesehen) verändert!
VCSCommand kann das für Sie erledigen – installieren Sie das Plugin, navigieren Sie zu der Datei und drücken Sie <Leader>cv