2013-12-04 3 views
0

У меня есть два файла с SVN с той же ревизией (2728).Почему существует разница между «diff» и «svn diff»?

 
$ svn update build.xml 
At revision 2728. 
$ svn update ../../java-skel/trunk/build.xml 
At revision 2728. 

Когда я пытаюсь выяснить разницу, «svn diff» не показывает никакой разницы.

 
$ svn diff build.xml ../../java-skel/trunk/build.xml 

Но есть различия.

 
$ diff build.xml ../../java-skel/trunk/build.xml 
67c67 
<  <format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss Z"/> 
--- 
>  <format property="now" pattern="yyyyMMdd'T'HHmmss,SSSZ"/> 
86a87 
>  <exclude name="**/.ignore/**"/> 
98c99 
<   <attribute name="Build-Date" value="${build.timestamp}"/> 
--- 
>   <attribute name="Build-Date" value="${now}"/> 
110a112 
>   <exclude name="**/.ignore/**"/> 

Почему разница не показана SVN?

+1

'СВН diff' для файла _same_, по сравнению с версиями и рабочей копии (обычно БАЗЫ (ревизии, которую вы последний выписали) и WC (рабочая копия, файл, который у вас есть на вашем диске)). Он не предназначен для разграничения файлов _different_. Что происходит здесь: если ни один из ваших файлов не был изменен с момента последнего выезда, нет никакой разницы (BASE && WC равны). 'svn diff ... несколько файлов ....' по сути делает файл 'diff file @ WC @ BASE' для достижения отдельного файла. – Wrikken

ответ

3

Ваша команда svn diff не сравнивает эти два файла, она просит Subversion дать вам изменения в каждом из двух файлов, и поскольку они не изменились с момента последней ревизии, команда не дает никакого вывода.

Если вы запустите svn help diff, вы увидите шесть разных способов использования этой команды. Вы используете # 2, diff [-c M | -r N[:M]] [TARGET[@REV]...] с более чем одной целью. Похоже, вы думаете, что используете # 4, # 5 или # 6, которые могут сравнивать произвольный файл на сервере с файлом на диске или на сервере, но который не будет сравнивать два файла на диск - это то, что для команды diff.

Вы можете принуждать svn diff в сравнение локальных файлов с помощью --old и --new параметров в явном виде:

svn diff --old=build.xml --new=../../java-skel/trunk/build.xml 
+0

Мой клиент SVN может быть слишком старым, потому что я получаю сообщение об ошибке: «Извините, svn_client_diff4 был вызван таким образом, который еще не поддерживается». Но спасибо за ответ. Использование URL-адресов для локальных файлов, похоже, работает. – ceving

Смежные вопросы