1

我想知道一旦检测到新代码已提交,如何在外部服务器上自动执行和 SVN 更新。

我对 SVN 等修订控制软件或多或少是新手,并在 htdocs 上建立了一个 SVN 存储库,期望当我在台式计算机上提交时,更改会在服务器上更新,网页也会更新。但是 SVN 将文件存储在数据库中(它们在存储库文件夹中不可见)所以我必须在网站上查看更改是在服务器上执行从存储库到 htdocs 文件夹的本地签出......

如何在服务器上执行 svn 自动更新?我知道如果许多用户尝试提交更改这会很麻烦,但我对“版本控制功能”而不是“多用户协作功能”更感兴趣。

谢谢

4

1 回答 1

2

您可以在您的服务器上放置一个 cron 作业,该作业每小时或每个午夜运行一次更新,但更好的是更改您的工作流程以使用批处理文件或脚本来执行您的提交,或者最好还是放置一个发布提交挂钩,每当有新提交,甚至是来自特定用户(例如您或发布经理)的新提交时,都会在您的服务器上进行检查。您还可以设置一个完整的 SVN 网络服务器 - 这可能比您需要的工作更多,除非您让很多人通过网络通过 SVN 访问您的工作环境。

有关钩子的一些示例,请参见此处

所以你的选择是:

  1. 每 x 次自动获取任何更新 - 很容易做到,但网站将过时,直到 x 时间过去。
  2. 使用不同的提交方法 - 也很简单,但仅适用于使用新方法的人。
  3. 使用 post commit hooks -最适合每个人的工作,并且总是在成功提交时更新,但永远不会介于两者之间
  4. 完整的 Web 服务器 - 大量的工作!

添加了来自 OP 的钩子详细信息

非常感谢史蒂夫的快速反应!确认选项 3 效果很好,可以进一步丰富答案,如果其他人也想做同样的事情,这是我在“提交后”挂钩上使用的代码(注意没有扩展名):

#!/bin/sh sudo svn update [path to working copy] >> [path to log] 

>> [path to log] 当然是可选的。提交后的文件也被转换为文件权限 755。 – Alejandro del Río

于 2013-08-10T07:19:17.337 回答