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
.