SVN的子命令SVN diff功能介紹
本節和大家討論一下版本控制工具SVN的子命令SVN diff使用情況,包括子命令SVN diff概念的基本介紹,以及關于子命令SVN diff的一個實例介紹,下面我們就為大家一一講解。
名稱
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以標準差別格式查看本地工作拷貝修改的內容。
顯示TARGET在REV的樣子時兩個修訂版本之間所作的修改,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。
顯示在OLDREV的OLD-TGT和NEWREV的NEW-TGT之間的區別。如果提供PATH,則與OLD-TGT和NEW-TGT關聯,將輸出限制在那些路徑。OLD-TGT和NEW-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 URL是svn 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@N和TARGET@M。
--revision N
客戶端比較TARGET@N和工作拷貝。
(無--revision)
客戶端比較base和 TARGET的TARGET。
如果使用其他語法,服務器會比較URL1和URL2各自的N和M。如果省掉N或M,會假定為HEAD。
缺省情況下,svn diff忽略文件的祖先,只會比較兩個文件的內容。如果你使用--notice-ancestry,比較修訂版本(也就是,當你運行svn diff比較兩個內容相同,但祖先歷史不同的對象會看到所有的內容被刪除又再次添加)時就會考慮路徑的祖先。這是子命令SVN diff的描述。
選項
--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
例子:
我們來看一下SVN子命令SVN diff的一個實例:比較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。子命令SVN diff講解在這里就告一段落了,請關注本節的其他相關報道。
【編輯推薦】