svn服務端總結

服務端目錄結構及一些目錄和文件的用途
conf:一些默認的配置文件
db:上傳的東西就在這個目錄,相當於數據庫
revprops:提交寫的message信息,可以查看這裏
revs:存放數據的地方
current:是當前最新的版本號(十進制),持續遞增的
txn-current:也是個序號會和current對應寫入到revs下面的數據庫(十六進制)
rep-cache:緩存,提交會自動生成
uuid:庫的一串id
hooks:一些腳本文件

檢查庫
svnadmin verify 庫路徑
例:svnadmin verify -r 0:1000 D:\Repositories\CHAINWORK_Src
-r 0:1000指的是檢測0到1000個版本,不指定從0到最新的版本。

導出庫
svnadmin dump 庫路徑
例:svnadmin dump -r 0:1000 D:\Repositories\CHAINWORK_Src > D:\src.dmp
如果從1001開始備份需要加–incremental參數,表示增量導出,否則還是從0開始
svnadmin dump --incremental -r 1001:2000 D:\Repositories\CHAINWORK_Src > D:\src2000.dmp

導入庫
svnadmin load D:\Repositories\CHAINWORK_Src < D:\src.dmp
svnadmin load D:\Repositories\CHAINWORK_Src < D:\src2000.dmp
按順序導入即可
如果同版本的svn服務端,可以直接拷貝庫的目錄

修復版本
版本異常損壞,導致不能載還可能不能看log
1、最簡單的辦法就是找到損壞的目錄或文件,直接刪除,不過還是不能看損壞地方的log;
2、可以看到log的情況,將庫恢復到損壞版本的前一個版本,然後將版本發生的改動用小烏龜重新提交上去,就會在服務端生成這個正常的版本;
3、看不到log的情況,進入revs目錄,打開損壞版本,只要不是空白就能找到點線索,找到所做的改動,重新提交;
以上2和3的方法要拷貝個庫作爲修復使用,完成後將修復完成的版本拷貝到原庫替換;

分離目錄
比如下面這個庫,從中分離出36.SINOPHARM_4PL_SDP這個目錄單獨做個庫

先導出B2B-IIT整個庫
svnadmin dump D:\Repositories\B2B-IIT > D:\b2b.dmp
將包含/01項目/36.SINOPHARM_4PL_SDP/的目錄篩選出來(要寫完整路徑)
svndumpfilter --drop-empty-revs --renumber-revs
include /01項目/36.SINOPHARM_4PL_SDP/ <b2b.dmp> D:\sinopharm.dmp
參數
–drop-empty-revs踢出空版本
–renumber-revs重新連續排序
之後就可以創建一個空庫將這個分離出來的進行導入
svnadmin create D:\Repositories\sinopharm 創建庫
svnadmin load D:\Repositories\sinopharm < D:\sinoharm.dmp 導入
這樣就把分離出來
如果是想剔除某個目錄的話
svndumpfilter --drop-empty-revs --renumber-revs
exclude /01項目/36.SINOPHARM_4PL_SDP/ <b2b.dmp> D:\sinob2b.dmp
svnadmin create D:\Repositories\sinob2b
svnadmin load D:\Repositories\sinob2b < D:\sinob2b.dmp

總結下踩過的坑
1、Windows系統如果路徑太長,查看文件夾屬性是不顯示了,比如有500個文件,可是有些路徑不顯示,看屬性就只顯示430個文件,其實這些文件是存在的;
2、svn一個目錄下是支持大小寫不一樣的兩個文件夾同時存在,如果用小烏龜載到本地,不能同時存在,強制合併爲一個文件夾;
3、如果遷移庫有分支,要保持版本號完全一致,不然會報錯,文件不存在;
4、使用svnadmin verify 檢測庫的時候不能進行,直接報錯,由於rep-cache緩存庫有問題,刪除或者改名就可以正常檢測;

發佈了4 篇原創文章 · 獲贊 0 · 訪問量 2696
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章