名称
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