Editez le fichier $HOME/.subversion/config
il contient donc la ligne :
diff-cmd = <your favorite diff application>
Certaines applications diff prennent en charge svn. Par exemple, diff-cmd = meld
devrait bien fonctionner. Cependant, vimdiff
n'est pas l'un d'eux. La raison en est que svn diff
donne les fichiers à comparer en 6ème et 7ème arguments, et non en 1er et 2ème comme d'habitude. Donc, ce que la plupart des gens font dans cette situation est ceci :
Créer un script wrapper :
#!/bin/sh
/usr/bin/vimdiff ${6} ${7}
Enregistrez-le, par exemple, dans $HOME/bin/svndiffwrap.sh
N'oubliez pas de le rendre exécutable chmod +x $HOME/bin/svndiffwrap.sh
.
Faites-en la commande svn diff :
en $HOME/.subversion/config
:
diff-cmd = /home/<username>/bin/svndiffwrap.sh
Remarque :Certains clients svn ne prennent pas en charge les chemins qui utilisent $HOME
variables d'environnement. Il est donc utile de spécifier le chemin complet.
Trouvé sur :http://blog.tplus1.com/index.php/2007/08/29/how-to-use-vimdiff-as-the-subversion-diff-tool/
Cet article de blog prend le script directement à partir de l'exemple d'outils de comparaison externe du livre SVN :
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.
Remarque : Cela suppose que votre vimdiff
est en /usr/local/bin
, pour moi, dans Fedora, c'était en /usr/bin
. Si vous ne le trouvez pas, lancez :
$ whereis vimdiff
Puis en ~/.subversion/config
:
[helpers]
...
diff-cmd = /home/<username>/bin/diffwrap.sh
vimdiff <(svn diff)
<()
est appelé substitution de processus qui crée un pseudo fichier à partir de la sortie de svn diff
pour vimdiff
à consommer.
Vous pouvez créer un alias de shell comme ceci :alias svndiff='vimdiff <(svn diff)'
Réponse similaire
PS - c'est la solution la plus simple que je n'ai pas encore trouvée; ça a changé ma vie (relativement parlant) !
VCSCommand peut le faire pour vous - installez le plugin, accédez au fichier et appuyez sur <Leader>cv