我的代碼以前的版本之一,存儲在一個Subversion版本庫中,有敏感信息。如何在保留所有其他版本的同時擦除它?如何從Subversion中清除敏感信息?
編輯:庫是谷歌代碼項目託管,所以我不能傾倒和恢復所需的庫=(
我的代碼以前的版本之一,存儲在一個Subversion版本庫中,有敏感信息。如何在保留所有其他版本的同時擦除它?如何從Subversion中清除敏感信息?
編輯:庫是谷歌代碼項目託管,所以我不能傾倒和恢復所需的庫=(
要的是一個SVN的功能通常被稱爲「抹殺」,不幸的是仍然不。實施
作爲一種變通方法,你將不得不拋售,過濾&重新導入你的資料庫見例如,在SVN常見問題How do I completely remove a file from the repository's history?
的BTW條目:。這是一個欺騙:-)。 https://stackoverflow.com/questions/663584/subversion-permanently-remove-incorrectly-checked-in-directory-project
編輯:
該信息庫谷歌代碼項目託管,所以我不能轉儲和 恢復庫=(
據我所看到的,在這種情況下唯一的解決方案是(要求Google)重置您的存儲庫(請參閱this FAQ和blog post)。這將完全刪除存儲庫中的所有數據(包括當前數據和歷史記錄),就好像您剛剛使用svnadmin create
啓動了存儲庫一樣。
顯然,您需要先備份您的存儲庫。
最好的解決辦法可能是:
snvsync
你的回購的備份(這也將備份歷史)snvsync
(參見常見問題解答How do I import my existing source code?)這是一個工作,但幸運的是有很好的解釋,such as this one by Rob Gonda。
除了完全轉儲之外,您無法刪除提交給subversion的內容,擦除原始內容並從轉儲中重新創建存儲庫。
如果你想徹底刪除一個文件/路徑,你可以做到這一點的過濾流:
svnadmin dump /path/to/repository > svndump
svndumpfilter exclude path/to/sensitivefile > svndump-excluded
svnadmin create /tmp/newrepository
svnadmin load /tmp/newrepository < svndump-excluded
然後備份你的/路徑/到/存儲庫,並與後你的/ tmp/newrepository」替換已經證實一切正常。
如果您只想排除一個版本,你必須這樣做
svnadmin dump -r 0:1000 /path/to/repository > svndump1
svnadmin dump -r 1002:HEAD --incremental /path/to/repository > svndump2
svnadmin create /tmp/newrepository
svnadmin load /tmp/newrepository <svndump1
svnadmin load /tmp/newrepository <svndump2
也就是說,修訂1001被排除在外。你不能做更細粒度的順便說一句,整個修訂必須排除在外。同樣的交易在這裏,備份您的原始存儲庫,驗證新存儲庫中所需的一切都在那裏。
我不認爲你可以自己做任何事情。你可以要求Google銷燬存儲庫,然後重建它嗎? – 2009-08-18 18:43:14
也許我可以做到,如果我爲項目選擇一個新名稱。 – 2009-08-18 19:36:19