### 名稱
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和3500`trunk`中的所有文件:
~~~
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk
~~~
使用范圍符號比較修訂版本3000和3500`trunk`中的三個文件:
~~~
$ 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
>
~~~
- 第1章介紹
- Subversion的歷史
- Subversion的特性
- Subversion的架構
- 安裝Subversion
- Subversion的組件
- 快速入門
- 第2章基本概念
- 版本模型
- Subversion實戰
- 摘要
- 第3章指導教程
- 導入
- 修訂版本: 號碼、關鍵字和日期,噢,我的!
- 初始化的Checkout
- 基本的工作周期
- 檢驗歷史
- 其他有用的命令
- 摘要
- 第4章分支與合并
- 使用分支
- 在分支間拷貝修改
- 常見用例
- 轉換工作拷貝
- 標簽
- 分支維護
- 摘要
- 第5章版本庫管理
- 版本庫的創建和配置
- 版本庫維護
- 添加項目
- 摘要
- 第6章配置服務器
- 網絡模型
- svnserve,一個自定義的服務器
- httpd,Apache的HTTP服務器
- 支持多種版本庫訪問方法
- 第7章高級主題
- 屬性
- Peg和實施修訂版本
- 外部定義
- 賣主分支
- 本地化
- Subversion版本庫URL
- 第8章開發者信息
- 使用API
- 進入工作拷貝的管理區
- WebDAV
- 使用內存池編程
- 為Subversion做貢獻
- 第9章Subversion完全參考
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin create
- svnadmin deltify
- svnadmin dump
- svnadmin help
- svnadmin hotcopy
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook propget
- svnlook proplist
- svnlook tree
- svnlook uuid
- svnlook youngest
- svnserve
- svnversion
- mod_dav_svn Configuration Directives
- 附錄A.Subversion對于CVS用戶
- 目錄的版本
- 更多離線操作
- 區分狀態和更新
- 分支和標簽
- 元數據屬性
- 沖突解決
- 二進制文件和轉化
- 版本化的模塊
- 認證
- 轉化CVS版本庫到Subversion
- 附錄C.WebDAV和自動版本化
- 自動版本化交互性
- Subversion和DeltaV
- 術語表