2010-09-08 15 views
16

Je voudrais svn diff pour afficher diff coloré à travers un pager (tout comme git fait). J'ai réussi à obtenir un diff couleur en réglant le diff-cmd dans ~/.subversion/config:Comment obtenez-vous un pager dans svn diff?

diff-cmd = colordiff 

Maintenant, je voudrais redirigez la sortie de diff par un téléavertisseur, comment dois-je faire cela? (À moins d'écrire svn diff | less, bien sûr.)

+1

[Bonne réponse ici] (http://superuser.com/a/241833/197866) (différentes options 'less' à celle ci-dessous). –

Répondre

14

Dans le passé, je l'ai utilisé un script d'emballage et mis diff-cmd à ce script:

#!/bin/sh 
colordiff "[email protected]" | less -r 

Mais alors vous obtenez un téléavertisseur séparé pour chaque fichier, je Je ne sais pas si c'est ce que vous voulez. De nos jours, je viens d'écrire svn diff | less.

Une autre solution facile est de créer un alias: alias svndiff='svn diff | less'. Ou si vous voulez utiliser svn diff, faire une fonction shell:

svn() { 
    if [ x"$1" = xdiff ] || [ x"$1" = xdi ]; then 
     /usr/bin/svn "[email protected]" | less -r 
    else 
     /usr/bin/svn "[email protected]" 
    fi 
} 
6

Je commence en svn diff | vim -.

+0

Réponse d'origine utilisée 'vimdiff' mais ce n'est plus utile que' vim' et montre une barre de pliage ennuyante sur la gauche de l'écran. –

+0

@AlastairIrvine La question demande spécifiquement un pager coloré. Vim standalone ne fait pas ça. Vimdiff montre côte à côte ce qui est très utile. –

+1

Vimdiff ne fait rien de spécial dans ce cas, comme je l'ai dit. Pour que Vimdiff fonctionne, il faut deux fichiers. –

0

Ajout

function sdi() 
{ 
    if tty -s; then 
      exec svn diff --diff-cmd=colordiff "[email protected]" | less -R 
    else 
      exec svn diff --diff-cmd=colordiff "[email protected]" 
    fi 
} 

à mon ~/.bashrc a fait l'affaire pour moi. Tiré de here