2009-07-10 61 views
11

我正在使用烏龜SVN來處理一個項目,我一個人工作,並且犯了一個巨大的文件(一個VC++智能感知數據庫)。現在我想從我的存儲庫中刪除此文件以便於其備份。從我的SVN存儲庫中完全刪除文件是可能的嗎?

從我的項目中刪除文件並進行提交(顯然)不能解決我的問題,因爲該文件的以前版本仍然存在於存儲庫中。有沒有辦法解決這個問題,不涉及創建一個新的存儲庫?


編輯

的@ryansstack解決方案完美地工作,這是我做了什麼(我跑在我的倉庫位於該目錄中的命令):

首先,我創建了一個轉儲我的存儲庫過濾那個巨大的文件:

svnadmin dump tcc | svndumpfilter exclude "/trunk/Image Segmentation/Image Segmentation.ncb" > tcc.bak 

然後,我創建了一個新的存儲庫(tcc2)並運行了followi ng命令:

svnadmin load tcc2 < tcc.bak 

現在tcc2的轉儲大小是7 MB,而不是170 MB的tcc。

+0

Dupe http:// stackoverflow。com/questions/663584/subversion-permanent-remove-incorrectly-checked-directory-project/663595#663595 http://stackoverflow.com/questions/560684/svn-obliterate – 2009-07-10 19:19:14

回答

2

據我所知,一旦在svn中提交了一個文件,svn中就沒有用於撤銷該文件的功能。您可以從目錄中刪除文件並提交目錄,但這隻會使文件不成爲目錄最新版本的一部分;承諾的版本仍然存在。通常我會發現這是件好事,但當然有些情況(如你的)可能不太理想。

-1

我們遇到了同樣的問題。我的SVN服務器管理員告訴我這是無法完成的。你可以做到這一點的唯一方法是啓動一個新的存儲庫,並將舊的存檔存檔到磁盤或其他東西。

請不要對文件進行任何更改,如果它是一個二進制文件,因爲我相信SVN存儲它的多個副本。

+0

SVN做二進制文件的差異。 – 2009-07-23 12:26:22

2

我已經看過做類似的事情,並從根本上設置了Subversion,以便您不能簡單地刪除這樣的東西。

但由於您已備份數據庫,因此應該使用check this out。我最終做的是轉儲我的存儲庫,過濾它,然後將其加載到一個新的存儲庫中。當然,由於其他原因,我已經在執行轉儲/過濾/加載循環,所以稍加額外的過濾不會增加太多工作量。如果你已經在做備份,你可以備份當前的repo(我假設你正在做一個轉儲或多個增量轉儲),使用svndumpfilter過濾特定的修訂版本,並從備份中重新加載。

編輯:底格里斯河官方對此有一個issue 516。 「svn obliterate」命令是計劃中的,但尚未實現。

-1

無法從svn撤消已提交的文件。

相關問題