Когда я использую 'svn diff' из командной строки, он печатает строки, которые были изменены, а также 3 неизменяемых строки до и после контекста. Я предпочитаю видеть только измененные строки без контекста. Мне не удалось определить какие-либо параметры командной строки, которые позволят мне вести себя так. Стандартные «diff» и «cvs diff» делают то, что я хочу по умолчанию. Конечно, «svn diff» может это сделать, но я чего-то не хватает. Кто-нибудь знает как?Как получить NO-контекст при использовании svn diff
ответ
После изучения полезной ссылки, приведенной выше, откройте короткий ответ, что svn построил -in diff не может делать то, что я хочу. Вы можете сказать ему использовать стандартную внешнюю diff, хотя и передать arg, чтобы сказать, что вы не хотите контекста. Я поставил следующий псевдоним в моем .bashrc и теперь все работает хорошо, если я использую это вместо:
alias svndiff='svn diff --diff-cmd=diff -x -U0'
This thread, похоже, приходит к выводу, что вы должны использовать внешнюю команду diff, чтобы контролировать количество контекста.
Я предпочитаю объединённые различия, так что мои пальцы всегда тип
svn diff -x -u
что означает, что используется внешняя команда (GNU Diff), я думаю.
Спасибо за полезную ссылку. Удивительно, что встроенный diff не может делать то, что я хочу. Мне кажется, что я нарушаю принцип Unix, в котором запрашивается наименьший результат. Использование команд -x -u дает мне те же результаты, что и нет. 'svn help diff' скажите мне, что это значения по умолчанию. Может быть, вам не нужно вводить дополнительный символ? – DaveBurns
Вы можете передать результаты 'svn diff' в grep и написать регулярное выражение, чтобы получить то, что вы хотите. Например, попробуйте следующее:
svn diff | grep "^[+-\]"
Вышеуказанная команда получает вас все строки, начинающиеся с «+» или «-» или «\». (Вам нужно «\», если вы хотите увидеть различия, такие как «\ No newline в конце файла».)
Это прекрасно работает, если вы хотите только измененные строки. Однако он не может выводить правильную информацию о номерах строк. Например. с 3 линиями контекста до/после, «@@ -21,7 +21,7 @@» говорит, что строка 24 была изменена. Без контекста вы увидите, что «@@ -24,1 +24,1 @@» – kamczak
Предложение выше по-прежнему производит контекстный формат, но с 0 строк контекста. Это до сих пор не является традиционным выходным сигналом перед доподчинением.
То, что работает для меня: svn di --diff-cmd=diff -x --normal
--normal
вариант (в дифф, который поставляется с OSX) дает традиционный формат, что некоторые люди предпочитают.
'-x' - это параметр расширения для' svn diff', он вызывает токен, следующий за ним, здесь '-U0', передаваться команде diff, указанной в '--diff-cmd', здесь' diff'. – valid