糯米文學吧

位置:首頁 > 計算機 > php語言

SVN(subversion)早期版本的刪除

php語言1.22W

導語:PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面我們來看看SVN(subversion)早期版本的刪除去具體怎麼操作,希望對大家有所幫助。

SVN(subversion)早期版本的刪除

具體作業過程如下:

準備工作

停止apache服務器,修改版本庫目錄路權限為root的方式,阻止所有的用户使用該版本庫。重啟apache,這樣可保證其他版本庫的用户繼續使用。

備份原有版本庫。

版本庫全備份可以採用svnadmin dump和svnadmin hotcopy兩種方法。在整個過程中兩種方法都會用到。首先作為版本庫全備份,以防將來出現作業錯誤時可以立刻恢復原有版本庫的操作,建議使用svnadmin hotcopy。一方面這樣的備份速度比較快,另一方面備份的結果就是一個可以立刻使用的版本庫,在需要恢復的時候直接拷貝回去就行了。具體命令如下:

svnadmin hotcopy --clean-logs /path/to/repo ./hotcopy > 2>hotcopy_ &

備份的結果就是一個目錄,尺寸基本和原版本庫相同,47G。

dump版本庫需要保留的版本。

通過svnlook youngest /path/to/repo命令可以看到版本庫最後的版本是多少。我要作業的版本庫是14079。經過跟對方公司協商,決定保留10000到14079之間的版本。因此需要從版本庫把10000以後的版本dump出來。具體命令如下

svnadmin dump /path/to/repo -r 10000:14079 > repo_dump_ 2>repo_dump_ &

dump出來的文件大約34G。

查看一下日誌文件,確定所需要的版本都被正確的dump下來了。

重建版本庫

rm -rf /path/to/repo

svnadmin create /path/to/repo

注意這裏面沒有使用 --fs-type bdb參數,因此創建出來的.版本庫是FSFS後端的。後面還會繼續解釋為什麼這麼做。

重新導入新版本

svnadmin load /path/to/repo < repo_dump_ > repo_ 2>repo_load_ &

檢查一下日誌文件,看看load是否成功。用svnlook命令看看load以後版本庫的最新版本。

修改版本庫權限

chown -R apache:apache /path/to/repo

到此為止版本庫的歷史版本刪除工作就結束了。需要注意的是,新建出來的版本庫的最新版本應該是4080。另外,經過觀察,新創建出來的版本尺寸只有2.7G。這個結果曾經一度讓我懷疑load沒有成功。但是事實上確實如此。需要説明的是,原來那個佔了47G的版本庫就是BDB格式的。我又試着創建了一個BDB後端的版本庫,用同樣的方式把dump文件導進去,結果版本庫的尺寸接近30G。而且導入的速度來看也明顯比向FSFS後端版本庫導入要慢很多。大概多了一個多小時的時間。可見BDB後端和FSFS後端版本庫在某種情況下的尺寸差距驚人的大。手冊是雖然也説了FSFS會比BDB小一些,但是絕對沒想到會小那麼多。subversion現在主推FSFS格式是有道理的。但是我總覺得畢竟BDB歷史更悠久一些,也更穩定一些。所以在今後硬盤空間不緊張的前提下,我還是傾向於使用BDB後端格式。