手冊

第 6 章  SubWCRev 程式

目錄

SubWCRev 命令列
關鍵字替換
關鍵字範例
COM 介面

SubWCRev 是一個 Windows 主控台程式,可以用來讀取 Subversion 工作副本的狀態,並且可選擇性地在樣板檔案中執行關鍵字替換。這通常用作建置過程的一部分,作為將工作副本資訊併入您正在建置的物件的一種方法。通常,它可能用於在 關於 方塊中包含版本號碼。

SubWCRev 命令列

SubWCRev 讀取工作副本中所有檔案的 Subversion 狀態,預設排除外部參照。它記錄找到的最高提交版本號碼,以及該版本的提交時間戳記,它還記錄工作副本中是否存在本機修改,或混合的更新版本。版本號碼、更新版本範圍和修改狀態顯示在 stdout 上。

SubWCRev.exe 是從命令列或腳本呼叫的,並使用命令列參數進行控制。

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
      

WorkingCopyPath 是要檢查的工作副本的路徑。您只能在工作副本上使用 SubWCRev,而不能直接在存放庫上使用。路徑可以是絕對路徑或相對於目前工作目錄的路徑。

如果您希望 SubWCRev 執行關鍵字替換,以便將存放庫版本和 URL 等欄位儲存到文字檔中,您需要提供一個樣板檔案 SrcVersionFile 和一個輸出檔案 DstVersionFile,其中包含樣板的替換版本。

您可以為 SubWCRev 指定忽略模式,以防止考慮特定的檔案和路徑。模式從名為 .subwcrevignore 的檔案中讀取。該檔案從指定的路徑以及工作副本根目錄中讀取。如果該檔案不存在,則不會忽略任何檔案或路徑。.subwcrevignore 檔案可以包含多個模式,以換行符分隔。這些模式與相對於存放庫根目錄的路徑以及相對於 .subwcrevignore 檔案路徑的路徑進行匹配。例如,要忽略 TortoiseSVN 工作副本的 doc 資料夾中的所有檔案,.subwcrevignore 將包含以下行

/trunk/doc
/trunk/doc/*

或者,假設 .subwcrevignore 檔案位於從 trunk 檢出的工作副本根目錄中,使用以下模式

doc
doc/*

與上面的範例相同。

要忽略所有圖片,可以像這樣設定忽略模式

*.png
*.jpg
*.ico
*.bmp

重要事項

忽略模式是區分大小寫的,就像 Subversion 一樣。

提示

要在 Windows 檔案總管中建立一個以點開頭的檔案,請輸入 .subwcrevignore.。請注意結尾的點。

有許多可選的開關會影響 SubWCRev 的運作方式。如果您使用多個開關,它們必須指定為單一群組,例如 -nm,而不是 -n -m

表 6.1  可用命令列開關列表

開關描述
-n如果給定此開關,如果工作副本包含本機修改,SubWCRev 將以 ERRORLEVEL 7 退出。這可以用於防止在存在未提交的變更時進行建置。
-N如果給定此開關,如果工作副本包含未版本控制且未忽略的項目,SubWCRev 將以 ERRORLEVEL 11 退出。
-m如果給定此開關,如果工作副本包含混合版本,SubWCRev 將以 ERRORLEVEL 8 退出。這可以用於防止使用部分更新的工作副本進行建置。
-d如果給定此開關,如果目標檔案已存在,SubWCRev 將以 ERRORLEVEL 9 退出。
-f如果給定此開關,SubWCRev 將包含資料夾的上次變更版本。預設行為是在取得版本號碼時僅使用檔案。
-e如果給定此開關,SubWCRev 將檢查包含 svn:externals 的目錄,但前提是它們來自同一個存放庫。預設行為是忽略外部參照。
-E如果給定此開關,與 -e 相同,但它會忽略具有明確版本的外部參照,當它們內部的版本範圍僅是屬性中給定的明確版本時。因此它不會導致混合版本。
-x如果給定此開關,SubWCRev 將以十六進位輸出版本號碼。
-X如果給定此開關,SubWCRev 將以十六進位輸出版本號碼,並在前面加上 '0X'。
-F如果給定此開關,SubWCRev 將忽略任何 .subwcrevignore 檔案並包含所有檔案。
-q如果給定此開關,SubWCRev 將執行關鍵字替換,而不會在 stdout 上顯示工作副本狀態。


如果沒有錯誤,SubWCRev 會傳回零。但是,如果發生錯誤,錯誤訊息會寫入 stderr 並顯示在主控台中。並且傳回的錯誤代碼為

表 6.2  SubWCRev 錯誤代碼列表

錯誤代碼描述
1語法錯誤。一個或多個命令列參數無效。
2找不到命令列上指定的檔案或資料夾。
3無法開啟輸入檔案,或無法建立目標檔案。
4無法配置記憶體。如果例如來源檔案太大,則可能會發生這種情況。
5來源檔案無法正確掃描。
6SVN 錯誤:當 SubWCRev 嘗試從工作副本中尋找資訊時,Subversion 傳回了錯誤。
7工作副本具有本機修改。這需要 -n 開關。
8工作副本具有混合版本。這需要 -m 開關。
9輸出檔案已存在。這需要 -d 開關。
10指定的路徑不是工作副本或工作副本的一部分。
11工作副本中包含未版本控制的檔案或資料夾。這需要 -N 開關。


TortoiseSVN 首頁