SVN的子命令SVN diff功能介紹
本節(jié)和大家討論一下版本控制工具SVN的子命令SVN diff使用情況,包括子命令SVN diff概念的基本介紹,以及關(guān)于子命令SVN diff的一個實例介紹,下面我們就為大家一一講解。
名稱
svn diff — 比較兩條路徑的區(qū)別。
概要
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]
描述
顯示兩條路徑的區(qū)別,子命令SVN diff有三種使用方式:
運行svn diff以標(biāo)準(zhǔn)差別格式查看本地工作拷貝修改的內(nèi)容。
顯示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之間的區(qū)別。如果提供PATH,則與OLD-TGT和NEW-TGT關(guān)聯(lián),將輸出限制在那些路徑。OLD-TGT和NEW-TGT可能是工作拷貝路經(jīng)或URL[@REV]。如果沒有指定,NEW-TGT缺省是OLD-TGT?!?r N”設(shè)置OLDREV缺省為N,而-r N:M設(shè)置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
服務(wù)器比較 TARGET@N和TARGET@M。
--revision N
客戶端比較TARGET@N和工作拷貝。
(無--revision)
客戶端比較base和 TARGET的TARGET。
如果使用其他語法,服務(wù)器會比較URL1和URL2各自的N和M。如果省掉N或M,會假定為HEAD。
缺省情況下,svn diff忽略文件的祖先,只會比較兩個文件的內(nèi)容。如果你使用--notice-ancestry,比較修訂版本(也就是,當(dāng)你運行svn diff比較兩個內(nèi)容相同,但祖先歷史不同的對象會看到所有的內(nèi)容被刪除又再次添加)時就會考慮路徑的祖先。這是子命令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最經(jīng)常的用法):
$ svn diff COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 4404)
+++ COMMITTERS (working copy)
查看文件COMMITTERS在修訂版本9115修改的內(nèi)容:
$ 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來指定外部區(qū)別程序
$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS
Index: COMMITTERS
===================================================================
0a1,2
> This is a test。子命令SVN diff講解在這里就告一段落了,請關(guān)注本節(jié)的其他相關(guān)報道。
【編輯推薦】