![当有人提交时如何自动更新工作副本 svn?](https://linux22.com/image/596948/%E5%BD%93%E6%9C%89%E4%BA%BA%E6%8F%90%E4%BA%A4%E6%97%B6%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E5%B7%A5%E4%BD%9C%E5%89%AF%E6%9C%AC%20svn%EF%BC%9F.png)
我们有一个 SVN 服务器 (UberSVN) 和一个测试服务器 (Ubuntu 11.10)。测试服务器正在运行 SVN 客户端和 LAMPP。
我们正在寻找一种解决方案,一旦有人将更改提交到 SVN 服务器,就可以自动更新测试服务器上开发人员的工作副本。
当有人提交时如何自动更新工作副本 svn?
答案1
我想到了一些选择
采取简单的强力方法,在测试服务器上每隔几分钟执行一次 SVN 更新。
使用 SVN 服务器上的 SVN 提交后挂钩向测试服务器发出信号,表示已发生提交,以便测试服务器可以更新。信号发送可以简单地通过将文件放置在测试服务器在脚本中查找的共享位置来发送。
使用适当的“持续集成”服务器,例如http://jenkins-ci.org/。
选项 2 在编写一些脚本方面需要做一些工作,但应该相当简单。
答案2
我使用了 Phil 提到的 2 号。
我的配置是在 svn 服务器上为每个存储库创建了一个工作副本,以便进行自动部署。
因此,每当有人向存储库提交内容时,我的提交后脚本都会更新工作副本,然后使用每 2 分钟运行一次的 cron 将工作副本 rsync 到客户端的服务器,以便在不同的客户端计算机之间同步工作副本。
我使用的是 Subversion。以下是我使用的命令。
svn co file:///path/to/$SvnRepoName /working/$ProjectName --> svn 服务器上的本地工作副本
/usr/bin/svn update /working/$PROJECTNAME --> 在我的提交后脚本中。
用于在客户端机器之间 rsync /working/$PROJECTNAME 的 shell 脚本。