目錄
本章是使用Subversion的一個完全手冊,包括了指令列客戶端(svn)和它的所有子命令,也有版本庫管理程序(svnadmin和svnlook)和它們各自的子命令。
為了使用指令列客戶端,只需要輸入svn和它的子命令[54]以及相關的選項或操作的對象—輸入的子命令和選項沒有特定的順序,下面使用svn status的方式都是合法的:
$ svn -v status $ svn status -v $ svn status -v myfile
你可以在第 2 章 基本使用發現更多使用客戶端命令的例子,以及「屬性」一節中的管理屬性的命令。
雖然Subversion的子命令有一些不同的選項,但有的選項是全域的—也就是說,每個選項保證是表示同樣的事情,而不管是哪個子命令使用的。舉個例子,--verbose(-v)一直意味著「冗長輸出」,而不管使用它的命令是什麼。
--auto-props
開啟auto-props,覆蓋config文件中的enable-auto-props指示。
--change (-c) ARG作為引用特定「修改」(也叫做修訂版本)的方法,這個選項是「-r ARG-1:ARG」語法上的甜頭。
--config-dir
DIR
指導Subversion從指定目錄而不是默認位置(用戶主目錄的.subversion)讀取設定訊息。
--diff-cmd
CMD
指定用來表示文件區別的外部程序,當svn diff調用時,會使用Subversion的內建區別引擎,默認會提供統一區別輸出,如果你希望使用一個外部(External)區別程序,使用--diff-cmd。你可以通過--extensions(本小節後面有更多介紹)把選項傳遞到區別程序。
--diff3-cmd
CMD
指定一個外部(External)程序用來合併文件。
--dry-run
檢驗運行一個命令的效果,但沒有實際的修改—可以用在磁碟和版本庫。
--editor-cmd
CMD
指定一個外部程序來編輯日誌訊息或是屬性值。如何設定預設編輯器見「設定」一節的editor-cmd小節。
--encoding
ENC
告訴Subversion你的提交日誌訊息是通過提供的字元集編碼的,預設時是你的操作系統的本地編碼,如果你的提交訊息使用其它編碼,你一定要指定這個值。
--extensions (-x) ARGS指定一個或多個Subversion傳遞給提供文件區別的外部區別程序的參數,如果你要傳遞多個參數,你一定能夠要用引號(例如,svn diff --diff-cmd /usr/bin/diff -x "-b -E")括起所有的參數。這個選項只有在使用--diff-cmd選項時使用。
--file (-F) FILENAME為特定子命令使用命名文件的的內容,儘管不同的子命令對這些內容做不同的事情。例如,svn commit使用內容作為提交日誌,而svn propset使用它作為屬性值。
--force
強制一個特定的命令或操作運行。Subversion有一些操作防止你做普通的使用,但是你可以傳遞force選項告訴Subversion「我知道我做的事情,也知道這樣的結果,所以讓我做吧」。這個選項在程序上等同於在打開電源的情況下做你自己的電子工作—如果你不知道你在做什麼,你很有可能會得到一個威脅的警告。
--force-log
將傳遞給--message(-m)或者--file(-F)的可疑參數指定為有效可接受。預設情況下,如果選項的參數看起來會成為子命令的目標,Subversion會提出一個錯誤,例如,你傳遞一個版本化的文件路徑給--file(-F)選項,Subversion會認為出了點錯誤,認為你將目標對像當成了參數,而你並沒有提供其它的—未版本化的文件作為日誌訊息的文件。為了確認你的意圖並且不考慮這類錯誤,傳遞--force-log選項給命令來接受它作為日誌訊息。
--help (-h或-?)如果同一個或多個子命令一起使用,會顯示每個子命令內建的幫助文字,如果單獨使用,它會顯示常規的客戶端幫助文字。
--ignore-ancestry
告訴Subversion在計算區別(只依賴於路徑內容)時忽略祖先。
--ignore-externals
告訴Subversion忽略外部定義和外部定義管理的工作副本。
--incremental
打印適合串聯的輸出格式。
--limit
NUM
只顯示第一個NUM日誌訊息。
--message (-m) MESSAGE表示你會在指令列中指定日誌訊息,緊跟這個開關,例如:
$ svn commit -m "They don't make Sunday."
--new
ARG
使用ARG作為新的目標(結合svn diff使用)。
--no-auth-cache
阻止在Subversion管理區快取認證訊息(如用戶名密碼)。
--no-auto-props
關閉auto-props,覆蓋config文件中的enable-auto-props指示。
--no-diff-added
防止Subversion打印新增文件的區別。預設的行為方式是,當新增一個文件時,svn diff打印的訊息和比較一個空白文件相同。
--no-diff-deleted
防止Subversion打印刪除文件的區別訊息,預設的行為方式是當你刪除了一個文件後運行svn diff打印的區別與刪除文件所有的內容得到的結果一樣。
--no-ignore
在狀態列表中顯示global-ignores設定選項或者是svn:ignore屬性忽略的文件。見「設定」一節和「忽略未版本控制的條目」一節查看詳情。
--no-unlock
不自動解鎖文件(預設的提交行為是解鎖提交列出的所有文件),更多訊息見「鎖定」一節。
--non-interactive
如果認證失敗,或者是不充分的憑證時,防止出現要求憑證的提示(例如用戶名和密碼)。這在運行自動腳本時非常有用,只是讓Subversion失敗而不是提示更多的訊息。
--non-recursive (-N)防止子命令迭代到子目錄,大多數子命令預設是迭代的,但是一些子命令—通常是那些潛在的刪除或者是取消本地修改的命令—不是。
--notice-ancestry
在計算區別時關注祖先。
--old
ARG
使用ARG作為舊的目標(結合svn diff使用)。
--password
PASS
指出在指令列中提供你的密碼—另外,如果它是需要的,Subversion會提示你輸入。
--quiet (-q)請求客戶端在執行操作時只顯示重要訊息。
--recursive (-R)讓子命令迭代到子目錄,大多數子命令預設是迭代的。
--relocate
目的路徑[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
操作針對修訂版本屬性,而不是Subversion文件或目錄的屬性。這個選項需要你傳遞--revision(-r)參數。
--show-updates (-u)導致客戶端顯示本地拷貝哪些文件已經過期,這不會實際更新你的任何文件—只是顯示了如果你運行svn update時更新的文件。
--stop-on-copy
導致Subversion子命令在傳遞歷史時會在版本化資源拷貝時停止收集歷史訊息—也就是歷史中資源從另一個位置拷貝過來時。
--strict
導致Subversion使用嚴格的語法,就是明確使用特定而不是含糊的子命令(也就是,svn propget)。
--targets
FILENAME
告訴Subversion從你提供的文件中得到希望操作的文件列表,而不是在指令列列出所有的文件。
--username
NAME
表示你要在指令列提供認證的用戶名—否則如果需要,Subversion會提示你這一點。
--verbose (-v)請求客戶端在運行子命令打印盡量多的訊息,會導致Subversion打印額外的字段,每個文件的細節訊息或者是關於動作的附加訊息。
--version
打印客戶端版本訊息,這個訊息不僅僅包括客戶端的版本號,也有所有客戶端可以用來訪問Subversion版本庫的版本庫訪問模塊列表。
--xml
使用XML格式打印輸出。