як зробити, щоб 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

Джерело


Це нове для 1.6? SVN ніколи не робить цього. Я мав би бути в курсі :)
Ден Макграт,

4
1.5.4 робить це. Але: --ignore-space-change, а не --ignore-space-changes
ur.

@Dan McG. Не знаю, чи є це нове для 1.6, але запис номер 8 за адресою akatombo.com/en/comments/ignore_whitespace_in_a_subversion_diff припускає, що він доступний з 1.4
jrbjazz

1
Оскільки EOL також може розглядатися як пробіл, додавання -x --ignore-eol-styleможе знадобитися, якщо стиль EOL відрізняється між версіями.
nedim

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"

11
насправді я використовував svn diff --diff-cmd / usr / bin / diff -x "-w" -r 2000: 2100> jj1, і він працює. спасибі
Умар

@umar: Це єдиний спосіб, який, здається, працює для мене.
Гонки легкості на орбіті

7

Зверніть увагу, що кінці рядків у цьому сценарії не вважаються пробілами, і це потрібно ігнорувати за допомогою:

svn diff -x --ignore-eol-style [etc...]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.