svn diff

Posted on Posted in 1.svn

名称

svn diff              — 比较两条路径的区别。

概要

diff [-c M | -r N[:M]] [TARGET[@REV]...]

           

diff [-r N[:M]] --old=OLD-TGT[@OLDREV] [--new=NEW-TGT[@NEWREV]] [PATH...]

           

diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]

                     

描述

显示两条路径的区别,svn diff有三种使用方式:

运行svn diff以标准差别格式查看本地工作拷贝修改的内容。

显示TARGETREV的样子时两个修订版本之间所作的修改,TARGET可以是任何工作拷贝路径或任何URL,如果TARGET是工作拷贝路径,则N缺省是BASE,而M是工作拷贝;如果是URL,则必须指定N,而M缺省是HEAD。“-c M”选项与“-r N:M”等价,其中N = M-1。使用“-c -M”则相反:“-r M:N”的意思是N = M-1

显示在OLDREVOLD-TGTNEWREVNEW-TGT之间的区别。如果提供PATH,则与OLD-TGTNEW-TGT关联,将输出限制在那些路径。OLD-TGTNEW-TGT可能是工作拷贝路经或URL[@REV]。如果没有指定,NEW-TGT缺省是OLD-TGT。“-r N”设置OLDREV缺省为N,而-r N:M设置OLDREV缺省为N,而NEWREV缺省为M

svn diff –old=OLD-URL[@OLDREV] –new=NEW-URL[@NEWREV]的简写方式。

svn diff -r N:M URLsvn diff -r N:M –old=URL –new=URL的简写。

svn diff [-r N[:M]] URL1[@N] URL2[@M]svn diff [-r N[:M]] –old=URL1 –new=URL2的简写。

TARGET是一个URL,然后可以使用前面提到的--revision或“@”符号来指定N和M。

如果TARGET是工作拷贝路径,则--revision选项的含义是:

  •                   --revision N:M

  • 服务器比较 TARGET@NTARGET@M

  •                   --revision N

  • 客户端比较TARGET@N和工作拷贝。

  • (无--revision

  • 客户端比较base和 TARGETTARGET

如果使用其他语法,服务器会比较URL1URL2各自的NM。如果省掉NM,会假定为HEAD

缺省情况下,svn diff忽略文件的祖先,只会比较两个文件的内容。如果你使用--notice-ancestry,比较修订版本(也就是,当你运行svn diff比较两个内容相同,但祖先历史不同的对象会看到所有的内容被删除又再次添加)时就会考虑路径的祖先。

别名

di

改变

无2

是否访问版本库

获得工作拷贝非BASE修订版本的区别时会

选项

--revision (-r) ARG --change (-c) ARG --old ARG --new ARG --non-recursive (-N) --diff-cmd CMD --extensions (-x) "ARGS" --no-diff-deleted --notice-ancestry --summarize --force --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR

                     

例子

比较BASE和你的工作拷贝(svn diff最经常的用法):

$ svn diff COMMITTERS  Index: COMMITTERS =================================================================== --- COMMITTERS (revision 4404) +++ COMMITTERS (working copy)

           

查看文件COMMITTERS在修订版本9115修改的内容:

$ svn diff -c 9115 COMMITTERS  Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3900) +++ COMMITTERS (working copy)

           

察看你的工作拷贝对旧的修订版本的修改:

$ svn diff -r 3900 COMMITTERS  Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3900) +++ COMMITTERS (working copy)

           

使用“@”语法与修订版本3000和35000比较:

$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500 Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500) …

           

使用范围符号来比较修订版本3000和3500(在这种情况下只能传递一个URL):

$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500)

           

使用范围符号比较修订版本3000和3500trunk中的所有文件:

$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk

           

使用范围符号比较修订版本3000和3500trunk中的三个文件:

$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk COMMITTERS README HACKING

           

如果你有工作拷贝,你不必输入这么长的URL:

$ svn diff -r 3000:3500 COMMITTERS  Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500)

           

使用--diff-cmdCMD-x来指定外部区别程序

$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS  Index: COMMITTERS =================================================================== 0a1,2 > This is a test >