由於 TortoiseSVN 的所有命令都透過命令列參數控制,您可以使用批次腳本自動化它,或從其他程式(例如您最愛的文字編輯器)啟動特定的命令和對話方塊。
請記住,TortoiseSVN 是一個 GUI 用戶端,本自動化指南向您展示如何讓 TortoiseSVN 對話方塊出現以收集使用者輸入。如果您想編寫一個不需要任何輸入的腳本,您應該改用官方的 Subversion 命令列用戶端。
TortoiseSVN GUI 程式稱為 TortoiseProc.exe
。所有命令都使用參數 /command:abcd
指定,其中 abcd
是所需的命令名稱。這些命令大多數至少需要一個路徑引數,該引數使用 /path:"some\path"
給定。在下表中,「命令」指的是 /command:abcd
參數,「路徑」指的是 /path:"some\path"
參數。
有一個特殊的命令不需要 /command:abcd
參數,但是,如果命令列上未指定任何內容,則會啟動專案監視器。如果指定了 /tray
,則專案監視器會隱藏啟動,並且只將其圖示新增到系統匣。
由於某些命令可以接受目標路徑列表(例如,提交多個特定檔案),因此 /path
參數可以接受多個路徑,路徑之間以 *
字元分隔。
您也可以指定一個檔案,其中包含以換行符號分隔的路徑列表。該檔案必須是 UTF-16 格式,沒有 BOM 。如果您傳遞了這樣一個檔案,請使用 /pathfile
而不是 /path
。若要讓 TortoiseProc 在命令完成後刪除該檔案,您可以傳遞參數 /deletepathfile
。如果您不傳遞 /deletepathfile
,則必須自行刪除該檔案,否則該檔案將會被留下。
用於提交、更新和許多其他命令的進度對話方塊通常會在命令完成後保持開啟狀態,直到使用者按下
按鈕。可以透過勾選設定對話方塊中的相應選項來變更此行為。但是使用該設定將關閉進度對話方塊,無論您是從批次檔案還是從 TortoiseSVN 內容選單啟動命令。若要指定組態檔案的不同位置,請使用參數 /configdir:"path\to\config\directory"
。這將覆寫預設路徑,包括任何登錄設定。
若要在命令結束時自動關閉進度對話方塊,而無需使用永久設定,您可以傳遞 /closeonend
參數。
/closeonend:0
不自動關閉對話方塊
/closeonend:1
如果沒有錯誤則自動關閉
/closeonend:2
如果沒有錯誤和衝突則自動關閉
/closeonend:3
如果沒有錯誤、衝突和合併則自動關閉
若要在本機操作沒有錯誤或衝突時關閉進度對話方塊,請傳遞 /closeforlocal
參數。
下表列出了可以使用 TortoiseProc.exe 命令列存取的所有命令。如上所述,這些命令應以 /command:abcd
的形式使用。在下表中,為了節省空間,省略了 /command
字首。
表 D.1. 可用命令和選項列表
命令 | 描述 |
---|---|
:about | 顯示關於對話方塊。如果未給定任何命令,也會顯示此對話方塊。 |
:log |
開啟日誌對話方塊。
svn 日期修訂版本可以是以下格式之一
|
:checkout |
開啟簽出對話方塊。 如果您指定 |
:import | 開啟匯入對話方塊。/path 指定要匯入資料的目錄。您也可以指定 /logmsg 參數,將預先定義的日誌訊息傳遞到匯入對話方塊。或者,如果您不想在命令列上傳遞日誌訊息,請使用 /logmsgfile:path ,其中 path 指向包含日誌訊息的檔案。 |
:update | 將 /path 中的工作副本更新到 HEAD。如果給定了選項 /rev ,則會顯示一個對話方塊,詢問使用者應更新到哪個修訂版本。若要避免顯示對話方塊,請指定修訂版本號碼 /rev:1234 。其他選項包括 /nonrecursive 、/ignoreexternals 和 /includeexternals 。/stickydepth 表示指定的深度應為黏著性的,從而建立稀疏簽出。/skipprechecks 可以設定為跳過在更新之前完成的所有檢查。如果指定了此選項,則會停用 顯示日誌 按鈕,並且在更新後也會停用顯示差異的內容選單。 |
:commit | 開啟提交對話方塊。/path 指定目標目錄或要提交的檔案列表。您也可以指定 /logmsg 參數,將預先定義的日誌訊息傳遞到提交對話方塊。或者,如果您不想在命令列上傳遞日誌訊息,請使用 /logmsgfile:path ,其中 path 指向包含日誌訊息的檔案。若要預先填寫錯誤 ID 方塊(如果您已正確設定與錯誤追蹤器的整合),您可以使用 /bugid:"the bug id here" 來執行此操作。 |
:add | 將 /path 中的檔案新增至版本控制。 |
:revert | 還原工作副本的本機修改。/path 告知要還原的項目。 |
:cleanup | 清除中斷或中止的操作,並解除鎖定 /path 中的工作副本。您還必須傳遞 /cleanup 才能實際執行清除。使用 /noui 以防止結果對話方塊彈出(告知清除已完成或顯示錯誤訊息)。/noprogressui 也會停用進度對話方塊。/nodlg 停用顯示清除對話方塊,使用者可以在其中選擇應在清除中執行的具體操作。可用的動作可以使用選項 /cleanup 進行狀態清除、/breaklocks 斷開所有鎖定、/revert 還原未提交的變更、/delunversioned 、/delignored 、/refreshshell 、/externals 、/fixtimestamps 和 /vacuum 來指定。 |
:resolve | 將 /path 中指定的衝突檔案標記為已解決。如果給定了 /noquestion ,則在解決時不會先詢問使用者是否真的應該執行此操作。 |
:repocreate | 在 /path 中建立儲存庫 |
:switch | 開啟切換對話方塊。/path 指定目標目錄,/url 指定要切換到的 URL。 |
:export | 將 /path 中的工作副本匯出到另一個目錄。如果 /path 指向未版本控制的目錄,則會顯示一個對話方塊,詢問要匯出到 /path 中目錄的 URL。如果您指定金鑰 /blockpathadjustments ,則會封鎖自動匯出路徑調整。 |
:dropexport | 將 /path 中的工作副本匯出到 /droptarget 中指定的目錄。此匯出不使用匯出對話方塊,而是直接執行。選項 /overwrite 指定覆寫現有檔案時不需使用者確認,選項 /autorename 指定如果檔案已存在,則匯出的檔案會自動重新命名以避免覆寫。選項 /extended 可以指定 localchanges 以僅匯出本機變更的檔案,或指定 unversioned 以同時匯出所有未版本控制的項目。 |
:dropvendor | 將 /path 中的資料夾遞迴複製到 /droptarget 中指定的目錄。新檔案會自動新增,目標工作副本中遺失的檔案會被移除,基本上確保來源和目的地完全相同。指定 /noui 以跳過確認對話方塊,並指定 /noprogressui 以同時停用顯示進度對話方塊。 |
:merge | 開啟合併對話方塊。/path 指定目標目錄。對於合併修訂版本範圍,可以使用以下選項:/fromurl:URL 、/revrange:string 。對於合併兩個儲存庫樹狀結構,可以使用以下選項:/fromurl:URL 、/tourl:URL 、/fromrev:xxx 和 /torev:xxx 。 |
:mergeall | 開啟合併全部對話方塊。/path 指定目標目錄。 |
:copy | 開啟分支/標籤對話方塊。/path 是要從中建立分支/標籤的工作副本。/url 是目標 URL。如果 URL 以 ^ 開頭,則假定它相對於儲存庫根目錄。若要預先勾選 將工作副本切換到新的分支/標籤 選項,您可以傳遞 /switchaftercopy 參數。若要勾選 建立中繼資料夾 選項,請傳遞 /makeparents 參數。您也可以指定 /logmsg 參數,將預先定義的日誌訊息傳遞到分支/標籤對話方塊。或者,如果您不想在命令列上傳遞日誌訊息,請使用 /logmsgfile:path ,其中 path 指向包含日誌訊息的檔案。 |
:settings | 開啟設定對話方塊。 |
:remove | 從版本控制中移除 /path 中的檔案。 |
:rename | 重新命名 /path 中的檔案。檔案的新名稱會在對話方塊中詢問。若要避免詢問是否要一步重新命名類似的檔案,請傳遞 /noquestion 。 |
:diff | 啟動 TortoiseSVN 設定中指定的外部差異程式。/path 指定第一個檔案。如果設定了選項 /path2 ,則會使用這兩個檔案啟動差異程式。如果省略 /path2 ,則會在 /path 中的檔案及其 BASE 之間進行差異比較。如果指定的檔案也有屬性修改,則也會為每個修改的屬性啟動外部差異工具。若要防止這種情況,請傳遞選項 /ignoreprops 。若要明確設定修訂版本號碼,請使用 /startrev:xxx 和 /endrev:xxx ,對於可選的釘住修訂版本,請使用 /pegrev:xxx 。如果設定了 /blame 且未設定 /path2 ,則會先使用給定的修訂版本 blame 檔案來完成差異比較。參數 /line:xxx 指定在顯示差異時要跳轉到的行。 |
:shelve | 將指定的路徑暫存到新的暫存架中。選項 /shelfname:name 指定暫存架的名稱。可以使用 /logmsg:message 指定可選的日誌訊息。如果傳遞了選項 /checkpoint ,則會保留檔案的修改。 |
:unshelve | 將名稱為 /shelfname:name 的暫存架應用於工作副本路徑。預設情況下,會應用暫存架的最後一個版本,但您可以使用 /version:X 指定版本。 |
:showcompare |
根據要比較的 URL 和修訂版本,這會顯示統一差異(如果設定了選項 必須指定選項 如果指定的 URL 也有屬性修改,則也會為每個修改的屬性啟動外部差異工具。若要防止這種情況,請傳遞選項 如果請求了統一差異,則可以指定可選的 |
:conflicteditor | 使用 /path 中衝突檔案的正確檔案,啟動 TortoiseSVN 設定中指定的衝突編輯器。 |
:relocate | 開啟重新定位對話方塊。/path 指定要重新定位的工作副本路徑。 |
:help | 開啟說明檔案。 |
:repostatus | 開啟檢查修改對話方塊。/path 指定工作副本目錄。如果指定了 /remote ,則對話方塊會在啟動時立即聯絡儲存庫,就像使用者按一下 檢查儲存庫 按鈕一樣。 |
:repobrowser |
啟動儲存庫瀏覽器對話方塊,指向
可以使用其他選項 如果 如果指定了 |
:ignore | 將 /path 中的所有目標新增到忽略列表,即將 svn:ignore 屬性新增到這些檔案。 |
:blame |
開啟 如果設定了選項
如果設定了選項 也支援選項 |
:cat | 將 /path 中給定的 URL 或工作副本路徑中的檔案儲存到 /savepath:path 中給定的位置。修訂版本在 /revision:xxx 中給定。這可以用於取得具有特定修訂版本的檔案。 |
:createpatch | 為 /path 中給定的路徑建立修補程式檔案。若要跳過「另存新檔」對話方塊,您可以傳遞 /savepath:path 以指定要將修補程式檔案直接儲存到的路徑。若要防止啟動統一差異檢視器來顯示修補程式檔案,請傳遞 /noview 。如果請求了統一差異,則可以指定可選的 prettyprint 選項,這將以更易於使用者閱讀的格式顯示合併資訊屬性。 |
:revisiongraph |
顯示
若要為特定路徑建立修訂版本圖表的影像檔案,但不顯示圖表視窗,請傳遞 由於修訂版本圖表有許多選項會影響其顯示方式,因此您也可以設定在建立輸出影像檔案時要使用的選項。使用 |
:lock | 鎖定 /path 中給定的檔案或目錄中的所有檔案。將顯示「鎖定」對話方塊,以便使用者可以輸入鎖定的註解。 |
:unlock | 解除鎖定 /path 中給定的檔案或目錄中的所有檔案。 |
:rebuildiconcache | 重建 Windows 圖示快取。僅在 Windows 圖示損壞時使用此命令。這樣做的一個副作用(無法避免)是桌面上的圖示會重新排列。若要隱藏訊息方塊,請傳遞 /noquestion 。 |
:properties |
顯示 對於處理版本控制的屬性,此命令需要工作副本。 如果 若要直接為特定屬性開啟屬性對話方塊,請將屬性名稱作為 |
:sync |
匯出/匯入設定,取決於目前設定或匯出的設定是否較新,或根據指定的方式。 如果使用 參數 如果未指定 如果指定了 如果指定了 參數 |
範例 (應在一行中輸入)
TortoiseProc.exe /command:commit /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt" /logmsg:"test log message" /closeonend:0 TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0 TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt" /startrev:50 /endrev:60 /closeonend:0