SubWCRev 是一個 Windows 主控台程式,可以用來讀取 Subversion 工作副本的狀態,並且可選擇性地在樣板檔案中執行關鍵字替換。這通常用作建置過程的一部分,作為將工作副本資訊併入您正在建置的物件的一種方法。通常,它可能用於在 「關於」 方塊中包含版本號碼。
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 | 來源檔案無法正確掃描。 |
6 | SVN 錯誤:當 SubWCRev 嘗試從工作副本中尋找資訊時,Subversion 傳回了錯誤。 |
7 | 工作副本具有本機修改。這需要 -n 開關。 |
8 | 工作副本具有混合版本。這需要 -m 開關。 |
9 | 輸出檔案已存在。這需要 -d 開關。 |
10 | 指定的路徑不是工作副本或工作副本的一部分。 |
11 | 工作副本中包含未版本控制的檔案或資料夾。這需要 -N 開關。 |