第 9 章 Subversion 完全參考

目錄

Subversion 指令列客戶端:svn
svn選項
svn子命令
svnadmin
svnadmin 選項
svnadmin子命令
svnlook
svnlook選項
svnlook子命令
svnsync
svnsync選項
svnsync子命令
svnserve
svnserve選項
svnversion
mod_dav_svn
Subversion屬性
版本控制的屬性
未版本控制的屬性
版本庫鉤子

本章是使用Subversion的一個完全手冊,包括了指令列客戶端(svn)和它的所有子命令,也有版本庫管理程序(svnadminsvnlook)和它們各自的子命令。

Subversion 指令列客戶端:svn

為了使用指令列客戶端,只需要輸入svn和它的子命令[54]以及相關的選項或操作的對象—輸入的子命令和選項沒有特定的順序,下面使用svn status的方式都是合法的:

$ svn -v status
$ svn status -v 
$ svn status -v myfile

你可以在第 2 章 基本使用發現更多使用客戶端命令的例子,以及「屬性」一節中的管理屬性的命令。

svn選項

雖然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格式打印輸出。

svn子命令

下面是一些子命令:



[54] 是的,使用--version選項不需要子命令,幾分鐘後我們會到達那個部分。