2012-01-18 41 views
10

我不幸提交了一個大文件夾到SVN(它有大約1.4GB和大約10000個文件,其中許多二進制文件)。 有沒有可能回到以前的版本,並使SVN服務器忘記下一次修訂完成?例如,這個提交是修訂版120.所以我想製作最新的修訂版119,並刪除120.修訂版的所有文件和SVN數據庫設置。SVN - 徹底刪除SVN服務器的修訂

我試過刪除那個文件夾,所以121提交完成了。然後我試圖合併版本121和119.但它不會有幫助。修訂版120仍在系統中。

然後我想使用svnsync製作一個SVN倉庫的鏡像,但是沒有選項可以設置我希望鏡像的版本。除非我沒有找到這個選項。 (我想設置從0到119的修訂版)。

你知道我能做些什麼嗎?是否有任何命令完全刪除一個修訂版,因爲它從未發生過?

+3

[在這裏所討論的類似的問題] [1] [1]:http://stackoverflow.com/questions/402159/roll-back-or-revert-entire-svn-repository-to -an-old-revision – paramosh 2012-01-18 12:33:30

+0

@paramosh - 謝謝,你說得對,當我試圖找到類似的問題時,我沒有成功... – srnka 2012-01-18 13:20:04

回答

13

您必須轉儲存儲庫,然後重新加載它,跳過不再需要的修訂版本。 (在你的例子中r120)

爲此,請使用svnadmin dump命令,然後使用svnadmin load命令。

例如:

svnadmin dump c:\svn\my_repo -r0:119 > repo.dump 
svnadmin load c:\svn\my_new_repo < repo.dump 

在更復雜的情況下,您可能需要使用svndumpfilter,但我不認爲你的情況這是必要的。

+0

是嗎?安全地做到這一點,並將其加載回原始存儲庫?在這種情況下,工作副本會發生什麼情況,他們的修訂版本號會更高,可以工作嗎? – 2014-04-01 12:41:10

+0

我不希望工作副本保持其完整性。這應該不是問題 - 只需刪除工作副本並簽出一個新副本即可。 – 2014-04-01 15:28:01

-1

你可以做以下兩種東西:

  1. 登錄到您的SVN服務器,刪除你不想在那裏的文件,並註銷。這將創建另一個修訂版,但由於它是通過服務器接口完成的,所以事情發生的機率很小。
  2. 恢復到修訂版119,進行一些小改動,然後提交。通過accepting yours解決所有衝突。
+0

謝謝,但這會使新的修訂和不需要的將仍然存在 – srnka 2012-01-18 13:15:58