2011年1月11日 星期二

TortoiseSVN徹底刪除一個文件或目錄

步驟
我有一個SVN repository,位址在svn:///D:/svn/repository/hello。
Check out到一個工作目錄(資料夾)名為hello_work,在資料夾上點擊右鍵選單中選擇"TortoiseSVN| Show log"。
要刪除的是在第五個版本時,所刪除的檔案GoogleAppEngine-1.4.1.msi。

  1. 首先需要取得檔案路徑,參考下圖紅色框選處:
        

     

    指令需下svn log -v "GoogleAppEngine-1.4.1.msi"

  2. 取得檔案路徑為/GoogleAppEngine-1.4.1.msi
  3. 把整個SVN repository lock住,以防在接下來的步驟中有人對SVN repository作修改。
  4. 導出舊庫中的所有版本svnadmin dump d:/svn/repository/hello > old.dmp
  5. 對導出的舊庫作過濾,去除要刪除的文件路徑。type old.dmp | svndumpfilter exclude "/GoogleAppEngine-1.4.1.msi" > new.dmp
  6. 重新建一個新的庫。在D槽下建立一個資料夾newsvn,在資料夾上點擊右鍵選單中選擇"TortoiseSVN| Create Repository Here"。指令需下svnadmin create D:/newsvn
  7. 將過濾後導出的檔案(new.dmp),導入新的庫。svnadmin load D:/newsvn < new.dmp

hello repository、new.dmp、old.dmp、newsvn reposity儘量在同一個槽作操作,如刪除的檔案很大,花費的時間才不會過長。

svnadmin load SVN_REPOSITORY_PATH

  • 輸出下列訊息表示load完成
    <<< Started new transaction, based on original revision 1      * Add path : temp.txt ... 完成. ------- Committed revision 1 >>>
  • 輸出下列訊息表示該svn repository path不存在
    svnadmin: 無法開啟檔案 'd:\svn\repository\hello\format': 系統找不到指定的路徑

  • 輸出下列訊息表示load失敗
    <<< Started new transaction, based on original revision 1
    * 新增路徑 : 新增文字文件.txt ...svnadmin: 檔案已存在: 檔案系統 'd:\svn\r
    epository\hello\db', 修訂版 '7-8', 路徑 '新增文字文件.txt'

沒有留言: