как заставить svn diff показывать только изменения строки без пробелов между двумя ревизиями

95

Я могу получить различия между двумя версиями, используя что-то вроде

svn diff -r 100:200 > file.diff

Но проблема в том, что есть много строк, которые появляются из-за изменения пробелов. Есть ли способ записать только те строки, которые действительно существенно меняются, а не только в пробелах?

Умар
источник

Ответы:

95

Ты можешь использовать

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

Если вы хотите игнорировать все пробелы:

svn diff -x -w | less

Источник

jrbjazz
источник
Это ново для 1.6? SVN никогда этого не делал. Я должен быть в курсе :)
Дэн МакГрат
4
1.5.4 это делает. Но: --ignore-space-change, а не --ignore-space-changes
ur.
@ Дэн МакГи. Не знаю, новинка ли для 1.6, но запись номер 8 на akatombo.com/en/comments/ignore_whitespace_in_a_subversion_diff предполагает, что она доступна с 1.4
jrbjazz
1
Поскольку EOL также может считаться пробелом, -x --ignore-eol-styleможет потребоваться добавление , если стиль EOL отличается в разных версиях.
недим
5
Использование svn diff -x -wиногда также может быть полезно, поскольку оно игнорирует больше пробелов (псевдоним для ignore-all-space)
Кендалл
74

Используйте -x --ignore-space-changeили -x --ignore-all-space. (См svn -h diff.)

ур.
источник
21
svn diff -x -w==svn diff -x --ignore-all-space
chrisg86
7

Вы можете использовать альтернативную команду diff с аргументом --diff-cmd для svn diff. diff - хорошая утилита, в которой есть множество функций для игнорирования пробелов.

Например:

svn diff --diff-cmd /usr/bin/diff -x "-w"
tschaible
источник
11
на самом деле я использовал svn diff --diff-cmd / usr / bin / diff -x "-w" -r 2000: 2100> jj1, и он работает. спасибо
umar
@umar: Это единственный способ, который мне подходит.
Гонки
7

Обратите внимание, что в этом сценарии конец строки не считается пробелом, и его нужно игнорировать:

svn diff -x --ignore-eol-style [etc...]
zzxyz
источник