Подтвердить что ты не робот

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" с двумя созданными столбцами, по-видимому, ближе всего к моему ответу, но я бы идеально хотел, чтобы один столбечный файл с "+" и "-" показывал добавленные/удаленные строки

Заранее благодарим за помощь! =)

4b9b3361

Ответ 1

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

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

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

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

И затем diff с svn:

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

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

Ответ 2

Да, вы можете использовать внешний diff для выполнения этого. Обычно я делаю это командой: svn diff --diff-cmd diff -x "-U30". -U30 - это размер унифицированного контекста; вы должны сделать его достаточно большим, чтобы включить все строки из файла. Например, если ваш самый длинный файл имеет 1000 строк, вы должны использовать -U1000.