2010-09-08 5 views
16

Ich möchte svn diff, um farbige Diff durch einen Pager anzuzeigen (genau wie Git tut). Ich habe die diff-cmd in ~/.subversion/config einen farbigen diff zu bekommen gelang, indem:Wie erhalten Sie einen Pager in Svn Diff?

diff-cmd = colordiff 

Jetzt habe ich die Ausgabe von diff durch einen Pager Rohr möchten, wie kann ich das tun? (Short von svn diff | less schreiben, natürlich.)

+1

[Gute Antwort hier] (http://superuser.com/a/241833/197866) (verschiedene "weniger" Optionen zu einer unten). –

Antwort

14

In der Vergangenheit habe ich einen Wrapper-Skript verwendet habe und setzte diff-cmd zu diesem Skript:

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

Aber Sie dann einen separaten Pager für jede Datei, ich bin mir nicht sicher, ob du das willst. Heutzutage schreibe ich einfach svn diff | less. Eine andere einfache Lösung macht einen Alias: alias svndiff='svn diff | less'. Oder wenn Sie svn diff verwenden möchten, machen Sie eine Shell-Funktion:

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

ich in der Regel svn diff | vim - laufen.

+0

Ursprüngliche Antwort verwendet 'vimdiff', aber das ist nicht nützlicher als' vim' und zeigt eine störende Faltleiste auf der linken Seite des Bildschirms. –

+0

@AlastairIrvine Die Frage fragt speziell nach einem farbigen Diff-Pager. Vim Standalone macht das nicht. Vimdiff zeigt Seite-an-Seite-Diff, was sehr nützlich ist. –

+1

Vimdiff macht in diesem Fall nichts besonderes, wie ich schon sagte. Damit Vimdiff funktioniert, benötigt es zwei Dateien. –

0

Hinzufügen

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 
} 

meiner ~/.bashrc hat den Trick für mich. Genommen von here