jak sprawić, by svn diff pokazywał tylko zmiany linii nie będące białymi znakami między dwiema wersjami

95

Mogę uzyskać różnice między dwiema wersjami, używając czegoś takiego jak

svn diff -r 100:200 > file.diff

Ale problem polega na tym, że jest wiele wierszy, które pojawiają się z powodu zmiany białych znaków. Czy istnieje sposób na zapisanie tylko tych wierszy, które faktycznie zmieniają się w znaczący sposób, a nie tylko odstępami?

umar
źródło

Odpowiedzi:

95

Możesz użyć

svn diff -r 100:200 -x -b > file.diff

Jeśli chcesz zignorować wszystkie spacje:

svn diff -x -w | less

Źródło

jrbjazz
źródło
Czy to nowość w wersji 1.6? SVN nigdy tego nie robił. Powinienem być bardziej aktualny :)
Dan McGrath
4
1.5.4 to robi. Ale: --ignore-space-change, nie --ignore-space-changes
ur.
@Dan McG. Nie wiem, czy jest nowy dla 1.6, ale wpis numer 8 na akatombo.com/en/comments/ignore_whitespace_in_a_subversion_diff sugeruje, że jest dostępny od 1.4
jrbjazz
1
Ponieważ EOL może być również uważany za odstępy, dodanie -x --ignore-eol-stylemoże być konieczne, jeśli styl EOL różni się w poszczególnych wersjach.
nedim
5
Używanie svn diff -x -wmoże być czasami przydatne, ponieważ ignoruje więcej białych znaków (alias dla ignorowania-całej-spacji)
Kendall
74

Użyj -x --ignore-space-changelub -x --ignore-all-space. (Zobacz svn -h diff.)

ur.
źródło
21
svn diff -x -w==svn diff -x --ignore-all-space
chrisg86
7

Możesz użyć alternatywnego polecenia diff, używając argumentu --diff-cmd dla svn diff. diff to dobre narzędzie, które ma wiele funkcji do ignorowania białych znaków.

Na przykład:

svn diff --diff-cmd /usr/bin/diff -x "-w"
tschaible
źródło
11
faktycznie użyłem svn diff --diff-cmd / usr / bin / diff -x "-w" -r 2000: 2100> jj1 i działa. dzięki
umar
@umar: To jedyny sposób, który wydaje mi się skuteczny.
Wyścigi lekkości na orbicie
7

Zwróć uwagę, że w tym scenariuszu końce linii nie są traktowane jako białe znaki i należy je zignorować, wykonując:

svn diff -x --ignore-eol-style [etc...]
zzxyz
źródło