发新话题
打印

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

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

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

概要
diff [-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 [-r N[:M]] [--old OLD-TGT] [--new NEW-TGT] [PATH...]会显示OLD-TGT和NEW-TGT的区别。如果给定路径PATH,它会被看作OLD-TGT和NEW-TGT的相对路径,输出也会限制在这些路径的区别上。OLD-TGT和NEW-TGT可以是工作拷贝路径或者是URL[@REV]。OLD-TGT缺省是当前工作目录,而NEW-TGT缺省是OLD-TGT。N缺省是BASE,M缺省时当前目录的版本,但如果NEW-TGT是一个URL,则默认是HEAD。svn diff -r N设置OLD-TGT的修订版本为N,svn diff -r N:M设置NEW-TGT的修订版本是M。

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@N和TARGET@M。

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

(无--revision)
客户端比较base和 TARGET的TARGET。

如果使用其他语法,服务器会比较URL1和URL2各自的N和M。如果省掉N或M,会假定为HEAD。

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

别名
di

变化


是否访问版本库
获得工作拷贝非BASE修订版本的区别时会

选项
--revision (-r) REV
--old OLD-TARGET
--new NEW-TARGET
--extensions (-x) "ARGS"
--non-recursive (-N)
--diff-cmd CMD
--notice-ancestry
--username USER
--password PASS
--no-auth-cache
--non-interactive
--no-diff-deleted
--config-dir DIR

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

$ svn diff COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS        (revision 4404)
+++ 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-cmd CMD -x来指定外部区别程序

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

TOP

发新话题