3 回答

TA貢獻1784條經驗 獲得超9個贊
注意:這可能無法用于當前的Subversion版本,這是一個錯誤的想法-但我將其保留在此處以供參考
注意: 通常,如果您錯誤地簽入,則應該恢復提交-請參閱此問題的其他答案。但是,如果您想知道如何真正撤消提交的影響并將存儲庫更改為以前的狀態,則下面有一些解釋:
這通常不是您想要的,但是,如果您確實要從存儲庫中刪除實際的提交版本,則可以按照以下步驟在存儲庫上進行討厭的回滾(假定已將$REV
其設置為最新版本)刪除):
請先備份您的存儲庫,因為這些更改可能會破壞存儲庫(并閱讀以下假設)
將您的本地副本還原到以前的版本,以免混淆(
svn revert -r $((REV-1))
)在存儲庫中,刪除
db/revs/$REV
并db/revprops/$REV
在存儲庫中,刪除
db/current
和(對于Subversion 1.6或更高版本)db/rep-cache.db
,然后運行svnadmin recover .
(可能)調整權限
db/rep-cache.db
以防止嘗試寫入只讀數據庫錯誤
所有這些都假定:
您正在使用
fsfs
基于倉庫Subversion版本大于
1.5.0
(否則,您必須手動編輯db/current
和更改版本號,而不是運行svnadmin recover .
)尚未提交其他后續修訂
您具有對存儲庫文件系統的寫訪問權
執行上述操作時,您不怕其他人嘗試訪問它
當一個巨大的文件被提交到一個我不想永遠保留在歷史記錄(和鏡像等)中的存儲庫時,我就完成了。這絕不是理想或正常的做法...

TA貢獻1836條經驗 獲得超13個贊
如果您的意思是,我該如何清除意外簽入的歷史記錄:這很困難。
svn不允許您撤消任何操作,因為它會將修訂版本保存為變更集。但是,有些工具可讓您在存儲庫轉儲中執行幾乎所有操作。您可以:
轉儲您的倉庫。
使用過濾流從SVN管理工具來擺脫簽入的。
把它放回倉庫。
但這可能會完全破壞您的存儲庫,因此,除非您完全了解自己的工作并備份所有內容,否則永遠不要嘗試這樣做。
- 3 回答
- 0 關注
- 484 瀏覽
添加回答
舉報