Как получить NO-контекст при использовании svn diff
Когда я использую 'svn diff' из командной строки, он печатает строки, которые были изменены, а также 3 неизменных строки до и после контекста. Я предпочитаю видеть только измененные строки без контекста. Мне не удалось определить какие-либо параметры командной строки, которые позволят мне вести себя так. Стандартные "diff" и "cvs diff" делают то, что я хочу по умолчанию. Конечно, "svn diff" может это сделать, но я чего-то не хватает. Кто-нибудь знает как?
Ответы
Ответ 1
Изучив полезную ссылку, приведенную выше, расслабьтесь, короткий ответ заключается в том, что встроенный diff svn не может делать то, что я хочу. Вы можете сказать ему использовать стандартную внешнюю diff, хотя и передать arg, чтобы сказать, что вам не нужен контекст. Я поместил следующий псевдоним в свой .bashrc, и теперь все работает хорошо, если я использую это вместо:
alias svndiff='svn diff --diff-cmd=diff -x -U0'
Ответ 2
Приведенное выше предложение все же создает контекстный формат, но с 0 линиями контекста. Это до сих пор не традиционный выход diff из-под допроса.
Что для меня работает: svn di --diff-cmd=diff -x --normal
Опция --normal
(в отличие от OSX) дает традиционный формат, который предпочитают некоторые люди.
Ответ 3
Вы можете передать результаты 'svn diff' в grep и написать регулярное выражение, чтобы получить то, что вы хотите. Например, попробуйте следующее:
svn diff | grep "^[+-\]"
Вышеупомянутая команда получает все строки, начинающиеся с "+" или "-" или "\". (Вам нужно "\", если вы хотите увидеть различия, такие как "\no newline в конце файла".)
Ответ 4
Этот поток, кажется, приходит к выводу, что вы должны использовать внешнюю команду diff, чтобы контролировать количество контекста.
Я предпочитаю унифицированные различия, поэтому мои пальцы всегда печатают
svn diff -x -u
Это означает, что используется внешняя (GNU diff) команда.