如何实现SVN服务端更新自动同步到多个客户端?

SVN客户端如何探知到服务端是否有更新?

应用场景

可能存在服务端和客户端概念不准的问题, 这里暂定SVN服务器仓库为服务端, 其他服务器上检出的SVN目录为客户端

仓库使用SVN, 在多个服务器上存在多个SVN检出的目录, 当SVN服务端仓库有提交和更新时, 如何让客户端感知到并且更新检出的代码?

尝试

  • 使用SVN的hook功能, 发现无论是服务端hook还是客户端hook, 都只能在某个动作(例如提交前后)发生时执行某些操作, 一般操作的都是本地侧的文件或者调用本地侧的脚本, 无法更新位于其他服务器的SVN检出目录 (因权限和涉密原因, 不讨论在SVN服务端调用脚本, 使用ssh远程操作其他服务器的情况)
  • 提出使用Rsync同步各服务器来同步检出目录的方案, 因环境原因, 多个服务器不支持批量部署, 操作成本过高, PASS

思考

我觉得SVN客户端的更新是一种相对于服务端来说的被动操作, 是否更新本地的内容是由SVN客户端自己决定的, SVN客户端不能主动探知到服务端是否更新了内容, 只能在执行svn update命令时才能知道服务端有没有更新.

hooks更多的是实现在某端发生了某个动作使触发其他动作, 比如调用脚本等.

问题

有没有一种方法可以实现当SVN服务端有更新时, 所有的客户端检出的目录都能自动更新?

阅读 572
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进