Subversion 的工作副本(Working Copy)目錄裡都會有隱藏的目錄 .svn 或 _svn,裡面儲存了關於此目錄中所有檔案的版本資訊與變更狀態,有時候我們要將專案複製給其他人時通常都會使用 TortoiseSVN 工具中提供的匯出(Export)的功能將專案相關檔案匯出成一個沒有這些 metadata 的隱藏目錄,但如果有人給你的檔案就是有這些目錄的時候想要一個一個刪除還真的很麻煩,今天就是要講如何快速的刪除這些檔案。
首先,我先講如何用「正規」的方法將專案匯出。匯出時要先用滑鼠右鍵「拖曳」該目錄到本目錄或其他目錄,然後放開後才會出現 SVN Export to here 與 SVN Export all to here 功能,但我想很多人會想問這兩個有什麼不同:
- SVN Export to here: 將該目錄最新版本匯出(最後一次 commit 的版本)
- SVN Export all to here: 將該目錄中所有檔案匯出(包括最新版的檔案、修訂過的檔案、新增尚未 commit 的檔案)
再來,說明今天要主講的「偏方」,有人寫了個小小的註冊檔(Registry File)可以設定檔案總管在目錄上的右鍵選單多一個 Delete SVN Folders 功能,你只要在目錄上按下右鍵,然後選擇 Delete SVN Folders 就會將該目錄以及所有子目錄下的所有 .svn 目錄給刪除掉。
不過這是個很危險的動作,因為這會將所有修訂的紀錄、版本資訊全部都給刪除掉喔,你最好知道你在做什麼,否則不要亂試。
而 Jon Galloway 部落格所列的 Registry 只針對 .svn 目錄做刪除而已,我自己小修了一下也可以連同刪除 _svn 目錄,註冊檔內容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /k \"TITLE Removing SVN Folders in %1 && FOR /r \"%1\" %%f IN (.svn _svn) DO RD /s /q \"%%f\" \""
你只要將以上的註冊檔內容複製下來,並儲存成 DeleteSVN.reg 檔,在雙擊這個檔就可以安裝完成了。