### 第9章Subversion完全參考
**目錄**
本章是使用Subversion的一個完全手冊,包括了命令行客戶端(**svn**)和它的所有子命令,也有版本庫管理程序(**svnadmin**和**svnlook**)和它們各自的子命令。
### Subversion命令行客戶端:**svn**
為了使用命令行客戶端,只需要輸入**svn**和它的子命令[[43](#)]以及相關的選項或操作的對象―輸入的子命令和選項沒有特定的順序,下面使用**svn status**的方式都是合法的:
~~~
$ svn -v status
$ svn status -v
$ svn status -v myfile
~~~
你可以在[第3章 *指導教程*]發現更多使用客戶端命令的例子,以及[“屬性”一節]中的管理屬性的命令。
### **svn**選項
雖然Subversion的子命令有一些不同的選項,但有的選項是全局的―也就是說,每個選項保證是表示同樣的事情,而不管是哪個子命令使用的。舉個例子,`--verbose`(`-v`)一直意味著“冗長輸出”,而不管使用它的命令是什么。
`--auto-props`
開啟auto-props,覆蓋`config`文件中的`enable-auto-props`指示。
`--config-dir`*`DIR`*
指導Subversion從指定目錄而不是默認位置(用戶主目錄的`.subversion`)讀取配置信息。
`--diff-cmd`*`CMD`*
指定用來表示文件區別的外部程序,當**svn diff**調用時,會使用Subversion的內置區別引擎,默認會提供統一區別輸出,如果你希望使用一個外置區別程序,使用`--diff-cmd`。你可以通過`--extensions`(本小節后面有更多介紹)把選項傳遞到區別程序。
`--diff3-cmd`*`CMD`*
指定一個外置程序用來合并文件。
`--dry-run`
檢驗運行一個命令的效果,但沒有實際的修改―可以用在磁盤和版本庫。
`--editor-cmd`*`CMD`*
指定一個外部程序來編輯日志信息或是屬性值。
`--encoding`*`ENC`*
告訴Subversion你的提交日志信息是通過提供的字符集編碼的,缺省時是你的操作系統的本地編碼,如果你的提交信息使用其它編碼,你一定要指定這個值。
`--extensions` (`-x`) *`ARGS`*
指定一個或多個Subversion傳遞給提供文件區別的外部區別程序的參數,如果你要傳遞多個參數,你一定能夠要用引號(例如,**svn diff --diff-cmd /usr/bin/diff -x "-b -E"**)括起所有的參數。這個選項*只有*在使用`--diff-cmd`選項時使用。
`--file` (`-F`) *`FILENAME`*
使用傳遞的文件內容作為特定子命令的選項。
`--force`
強制一個特定的命令或操作運行。Subversion有一些操作防止你做普通的使用,但是你可以傳遞force選項告訴Subversion“我知道我做的事情,也知道這樣的結果,所以讓我做吧”。這個選項在程序上等同于在打開電源的情況下做你自己的電子工作―如果你不知道你在做什么,你很有可能會得到一個威脅的警告。
`--force-log`
將傳遞給`--message`(`-m`)或者`--file`(`-F`)的可疑參數指定為有效可接受。缺省情況下,如果選項的參數看起來會成為子命令的目標,Subversion會提出一個錯誤,例如,你傳遞一個版本化的文件路徑給`--file`(`-F`)選項,Subversion會認為出了點錯誤,認為你將目標對象當成了參數,而你并沒有提供其它的―未版本化的文件作為日志信息的文件。為了確認你的意圖并且不考慮這類錯誤,傳遞`--force-log`選項給命令來接受它作為日志信息。
`--help` (`-h` or `-`)
如果同一個或多個子命令一起使用,會顯示每個子命令內置的幫助文本,如果單獨使用,它會顯示常規的客戶端幫助文本。
`--ignore-ancestry`
告訴Subversion在計算區別(只依賴于路徑內容)時忽略祖先。
`--incremental`
打印適合串聯的輸出格式。
`--message` (`-m`) *`MESSAGE`*
表示你會在命令行中指定日志信息,緊跟這個開關,例如:
~~~
$ svn commit -m "They don't make Sunday."
~~~
`--new`*`ARG`*
使用*`ARG`*作為新的目標。
`--no-auth-cache`
阻止在Subversion管理區緩存認證信息(如用戶名密碼)。
`--no-auto-props`
關閉auto-props,覆蓋`config`文件中的`enable-auto-props`指示。
`--no-diff-deleted`
防止Subversion打印刪除文件的區別信息,缺省的行為方式是當你刪除了一個文件后運行**svn diff**打印的區別與刪除文件所有的內容得到的結果一樣。
`--no-ignore`
在狀態列表中顯示`global-ignores`配置選項或者是`svn:ignore`屬性忽略的文件。見[“config”一節]和[“`svn:ignore`”一節]查看詳情。
`--non-interactive`
如果認證失敗,或者是不充分的憑證時,防止出現要求憑證的提示(例如用戶名和密碼)。這在運行自動腳本時非常有用,只是讓Subversion失敗而不是提示更多的信息。
`--non-recursive` (`-N`)
防止子命令迭代到子目錄,大多數子命令缺省是迭代的,但是一些子命令―通常是那些潛在的刪除或者是取消本地修改的命令―不是。
`--notice-ancestry`
在計算區別時關注祖先。
`--old`*`ARG`*
使用*`ARG`*作為舊的目標。
`--password`*`PASS`*
指出在命令行中提供你的密碼―另外,如果它是需要的,Subversion會提示你輸入。
`--quiet` (`-q`)
請求客戶端在執行操作時只顯示重要信息。
`--recursive` (`-R`)
讓子命令迭代到子目錄,大多數子命令缺省是迭代的。
`--relocate`*`FROM TO [PATH...]`*
**svn switch**子命令中使用,用來修改你的工作拷貝所引用的版本庫位置。當版本庫的位置修改了,而你有一個工作拷貝,希望繼續使用時非常有用。見**svn switch**的例子。
`--revision` (`-r`) *`REV`*
指出你將為特定操作提供一個修訂版本(或修訂版本的范圍),你可以提供修訂版本號,修訂版本關鍵字或日期(在華括號中)作為修訂版本開關的參數。如果你希望提供一個修訂版本范圍,你可以提供用冒號隔開的兩個修訂版本,舉個例子:
~~~
$ svn log -r 1729
$ svn log -r 1729:HEAD
$ svn log -r 1729:1744
$ svn log -r {2001-12-04}:{2002-02-17}
$ svn log -r 1729:{2002-02-17}
~~~
見[“修訂版本關鍵字”一節]查看更多信息。
`--revprop`
操作是針對一個修訂版本的屬性而不是一個文件或目錄的屬性。這個開關需要你也要通過`--revision`(`-r`)傳遞一個修訂版本號,見[“未受版本控制的屬性”一節]關于未版本化的屬性的細節。
`--show-updates` (`-u`)
導致客戶端顯示本地拷貝哪些文件已經過期,這不會實際更新你的任何文件―只是顯示了如果你運行**svn update**時更新的文件。
`--stop-on-copy`
導致Subversion子命令在傳遞歷史時會在版本化資源拷貝時停止收集歷史信息―也就是歷史中資源從另一個位置拷貝過來時。
`--strict`
導致Subversion使用嚴格的語法,也就是選擇含糊,除非談論特定的子命令。
`--targets`*`FILENAME`*
告訴Subversion從你提供的文件中得到希望操作的文件列表,而不是在命令行列出所有的文件。
`--username`*`NAME`*
表示你要在命令行提供認證的用戶名―否則如果需要,Subversion會提示你這一點。
`--verbose` (`-v`)
請求客戶端在運行子命令打印盡量多的信息,會導致Subversion打印額外的字段,每個文件的細節信息或者是關于動作的附加信息。
`--version`
打印客戶端版本信息,這個信息不僅僅包括客戶端的版本號,也有所有客戶端可以用來訪問Subversion版本庫的版本庫訪問模塊列表。
`--xml`
使用XML格式打印輸出。
### **svn**子命令
是的,使用`--version`選項不需要子命令,幾分鐘后我們會到達那個部分。
- 第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
- 術語表