为什么“diff”和“svn diff”之间有区别?

时间:2013-12-04 10:02:39

标签: svn

我有两个用SVN检出的文件,版本相同(2728)。

$ 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 个答案:

答案 0 :(得分:3)

您的svn diff命令没有比较这两个文件,它要求Subversion为您提供两个文件中的每个文件的更改,并且由于您上次修订后都没有更改,因此该命令不会给出任何文件输出

如果您运行svn help diff,那么您将看到使用该命令的六种不同方式。你正在使用#2,diff [-c M | -r N[:M]] [TARGET[@REV]...]有多个目标。看起来你正在考虑使用#4,#5或#6,它可以将服务器上的任意文件与磁盘上或服务器上的文件进行比较,但是它赢了“ t比较磁盘上的两个文件 - 这就是常规diff命令的用途。

您可以明确使用svn diff--old参数来强制--new比较本地文件:

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