目標(biāo)
使用SVN進(jìn)行版本管理時,有時會遇到意外情況導(dǎo)致版本庫丟失造成巨大損失。比如硬盤壞了什么的。因此,需要將SVN倉庫備份到其他機(jī)器。
SVN備份的方式很多。手動備份工作量很大,定時備份比較輕松也比較簡單,但是感覺不太智能。我們要有追求,實(shí)現(xiàn)SVN倉庫自動同步到備份倉庫。
方法
實(shí)現(xiàn)方法分為兩步:
- 搭建SVN備份倉庫,并使用svnsync工具同步SVN倉庫。
- 在SVN倉庫中設(shè)置post-commit鉤子,自動進(jìn)行同步。
目標(biāo): 我們需要將存儲在A機(jī)器上的SVN倉庫同步到B機(jī)器上的SVN備份倉庫。(實(shí)際上就是在B機(jī)器上搭建一個A機(jī)器上的SVN倉庫的鏡像)
具體操作方法如下:
使用VisualSVN在B機(jī)器上創(chuàng)建一個空的SVN倉庫,作為SVN備份倉庫。
在B機(jī)器上新建的SVN備份倉庫上右鍵 -> Properties -> Hooks -> 選中Post-revision property change hook -> 點(diǎn)擊左下方的Edit -> 在輸入框中輸入“exit 0” (鏡像必須給SVN倉庫足夠大的更改權(quán)限)
-
初始化備份倉庫。在A/B機(jī)器上執(zhí)行:
svnsync init [備份倉庫地址] [A機(jī)器上的SVN倉庫地址]可能還需要賬號與密碼,看情況解決。然后就靜靜等待初始化完成。完成后就可以看到備份倉庫與源倉庫一模一樣啦
-
同步備份倉庫。在A/B機(jī)器上執(zhí)行:
svnsync sync [備份倉庫地址]就可以同步啦??梢試L試一下提交然后再同步。
-
設(shè)置自動同步。自動同步的原理是利用SVN的提交完成的鉤子實(shí)現(xiàn),在A機(jī)器上SVN倉庫完成提交后執(zhí)行同步命令,同步到B機(jī)器上的備份服務(wù)器去。
打開A機(jī)器上的VisualSVN -> 在倉庫上右鍵 -> Properties -> Hooks -> 選中Post-commit hook -> 點(diǎn)擊左下方的Edit -> 在輸入框中輸入“svnsync sync [備份倉庫地址]”
配置鉤子執(zhí)行權(quán)限。在A機(jī)器上計(jì)算機(jī)右鍵 -> 管理 -> 服務(wù)與應(yīng)用程序 -> 服務(wù) -> 找到VisualSVN Server并右鍵 -> 屬性 -> 登錄 -> 本地系統(tǒng)帳戶 -> 允許服務(wù)與桌面交互 -> 確定
再次提交版本,這時,A 機(jī)器會提示有服務(wù)需要展示消息 -> 查看消息 -> 根據(jù)提示完成輸入
注意: 這個方法目前只在A機(jī)器是win7的情況下測試通過。在win10上測試不通過,因?yàn)閣in10不會有交互消息展示出來。目前還沒有找到解決辦法。
至此就大功告成啦,以后每次提交版本到A 機(jī)器的SVN倉庫時,都會自動提交到B 機(jī)器的SVN備份服務(wù)器啦。