SVN仓库自动备份方法

目标

使用SVN进行版本管理时,有时会遇到意外情况导致版本库丢失造成巨大损失。比如硬盘坏了什么的。因此,需要将SVN仓库备份到其他机器。

SVN备份的方式很多。手动备份工作量很大,定时备份比较轻松也比较简单,但是感觉不太智能。我们要有追求,实现SVN仓库自动同步到备份仓库。

方法

实现方法分为两步:

  1. 搭建SVN备份仓库,并使用svnsync工具同步SVN仓库。
  2. 在SVN仓库中设置post-commit钩子,自动进行同步。

目标: 我们需要将存储在A机器上的SVN仓库同步到B机器上的SVN备份仓库。(实际上就是在B机器上搭建一个A机器上的SVN仓库的镜像)

具体操作方法如下:

  1. 使用VisualSVN在B机器上创建一个空的SVN仓库,作为SVN备份仓库。

  2. 在B机器上新建的SVN备份仓库上右键 -> Properties -> Hooks -> 选中Post-revision property change hook -> 点击左下方的Edit -> 在输入框中输入“exit 0” (镜像必须给SVN仓库足够大的更改权限)

  3. 初始化备份仓库。在A/B机器上执行:

    svnsync init [备份仓库地址] [A机器上的SVN仓库地址]
    

    可能还需要账号与密码,看情况解决。然后就静静等待初始化完成。完成后就可以看到备份仓库与源仓库一模一样啦

  4. 同步备份仓库。在A/B机器上执行:

    svnsync sync [备份仓库地址]
    

    就可以同步啦。可以尝试一下提交然后再同步。

  5. 设置自动同步。自动同步的原理是利用SVN的提交完成的钩子实现,在A机器上SVN仓库完成提交后执行同步命令,同步到B机器上的备份服务器去。

    打开A机器上的VisualSVN -> 在仓库上右键 -> Properties -> Hooks -> 选中Post-commit hook -> 点击左下方的Edit -> 在输入框中输入“svnsync sync [备份仓库地址]”

  6. 配置钩子执行权限。在A机器上计算机右键 -> 管理 -> 服务与应用程序 -> 服务 -> 找到VisualSVN Server并右键 -> 属性 -> 登录 -> 本地系统帐户 -> 允许服务与桌面交互 -> 确定

  7. 再次提交版本,这时,A 机器会提示有服务需要展示消息 -> 查看消息 -> 根据提示完成输入

注意: 这个方法目前只在A机器是win7的情况下测试通过。在win10上测试不通过,因为win10不会有交互消息展示出来。目前还没有找到解决办法。

至此就大功告成啦,以后每次提交版本到A 机器的SVN仓库时,都会自动提交到B 机器的SVN备份服务器啦。

你可能感兴趣的:(SVN仓库自动备份方法)