Svn diff для вывода всех строк из файлов

Я искал некоторое время и до сих пор не могу найти простое решение этой проблемы у меня. Я хочу создать разницу между двумя ревизиями файла но Я хочу, чтобы вывод показал все строки моего файла.

кстати, я нахожусь на AIX 5.3, используя svn 1.6.17.

пример: сравнение разницы между ревизиями 21 и 22 моего файла "test_file"

% svn cat -r21 test_file 
My Test File

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9

% svn cat -r22 test_file
My Test File

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9

added after 1
added after 2
added after 3

% svn diff -r21:22 test_file
Index: test_file
===================================================================
--- test_file   (revision 21)
+++ test_file   (revision 22)
@@ -9,3 +9,7 @@
 line 7
 line 8
 line 9
+
+added after 1
+added after 2
+added after 3

теперь этот вывод показывает различия в двух ревизиях, но не все строки файла есть, он показывает только предыдущие 3.

Итак, на самом деле мой вопрос заключается в том, как получить эти строки на выходе??

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

дополнительная точка: до сих пор "sdiff" с его 2-мя столбцами, похоже, является ближе всего я могу получить свой ответ, но в идеале я хотел бы иметь один файл с столбцами " + "и" -", показывающий добавленные/удаленные строки

заранее спасибо за любую помощь! =)

2 ответов


возможно, следующее близко к тому, что вы хотите:

сначала создайте скрипт diff, который будет использовать args, полученные от svn соответствующим образом:

#!/bin/sh
# file : /usr/local/bin/mydiff

# assumes less that 10,000 lines per file
/usr/bin/diff -U10000  

а затем diff с svn:

svn diff --diff-cmd /usr/local/bin/mydiff

Если вы хотите более точно настроить вывод diff вам нужно всего лишь изменить свой mydiff сценарий.


Да, вы можете использовать external diff для этого. Обычно я делаю это по команде:

svn diff --diff-cmd diff -x "-U30" 

здесь -U30 - унифицированный размер контекста. Вы должны сделать его достаточно большим, чтобы включить все строки из файла. Например, если ваш самый длинный файл имеет 1000 строк, вы должны использовать -U1000.