使用svnsync實現已有版本庫的鏡像
svn不支持分布式開發,所以把svn版本庫保存在一台服務器上是不安全的。制作一個鏡像svn版本庫有多種方式,我采用subversion自帶的svnsync程序。
源版本庫路徑:http://192.168.0.100/svn/project
鏡像版本庫路徑:/var/svn/project
-
建立鏡像版本庫
svnadmin create /var/svn/project # 創建鈎子 cp /var/svn/project/hooks/pre-revprop-change.tmpl /var/svn/project/hooks/pre-revprop-change # 給予鈎子運行權限 chmod a+x /var/svn/project/hooks/pre-revprop-change # 編輯pre-revprop-change鈎子,將最后一行的 `exit 1` 改為 `exit 0` vim /var/svn/project/hooks/pre-revprop-change
-
初始化鏡像庫
svnsync init file:///var/svn/project/ http://192.168.0.100/svn/project
-
同步
# 同步也使用這段指令 svnsync sync --non-interactive file:///var/svn/project
-
解鎖
# 刪除屬性 “svn:sync-lock” 於版本庫版本 0 svn propdel svn:sync-lock --revprop -r 0 file:///var/svn/project/
-
修改原始版本庫的地址
如果原始版本庫的地址改變了(比如說換了域名或者IP地址),在svn中可以使用 svn relocate
來實現,但在svnsync中,就必須用propset來實現了,具體指令如下:
svn propget svn:sync-from-url –-revprop -r 0 file:///var/svn/project/ # 這個操作會顯示原始版本庫的地址(假如你忘了原始地址就很有用) # http://192.168.0.100/svn/project # 設置新的版本庫地址 svn propset svn:sync-from-url –-revprop -r 0 http://10.0.0.9/svn/project file:///var/svn/project/ # 再次同步 svnsync sync --noninteractive file:///var/svn/project/