用于网站管理的服务器内部自动SVN更新

用于网站管理的服务器内部自动SVN更新,svn,version-control,Svn,Version Control,我想知道一旦外部服务器检测到提交了新代码,如何在其上自动执行和SVN更新。 我对SVN这样的版本控制软件比较陌生,在htdocs上设置了SVN存储库,希望当我在桌面计算机上提交时,服务器上的更改会更新,网页也会更新。但是,SVN将文件存储在数据库中(它们在存储库文件夹中不可见),因此我要在网站上查看更改,必须在服务器上执行从存储库到htdocs文件夹的本地签出 我如何在服务器上执行svn自动更新?我知道如果许多用户尝试提交更改,这会很麻烦,但我更感兴趣的是“版本控制功能”,而不是“多用户协作功能

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

我对SVN这样的版本控制软件比较陌生,在htdocs上设置了SVN存储库,希望当我在桌面计算机上提交时,服务器上的更改会更新,网页也会更新。但是,SVN将文件存储在数据库中(它们在存储库文件夹中不可见),因此我要在网站上查看更改,必须在服务器上执行从存储库到htdocs文件夹的本地签出

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


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

有关挂钩的一些示例,请参见

因此,您的选择是:

  • 每x时间自动获取任何更新-很容易做到,但网站将过时,直到x时间已过
  • 使用不同的提交方法-也很容易,但是只适用于使用新方法的人
  • 使用post-commit钩子-对每个人来说都是最好的,并且总是在成功提交时更新,但绝不在两者之间
  • 完整的Web服务器-大量工作 从OP中添加了钩子细节
    非常感谢Steves的快速响应!经确认的方案3有效 很好,如果其他人想做的话,让答案更加丰富 同样,这是我在“post-commit”钩子上使用的代码(注意 无扩展):

    >>[日志路径]当然是可选的。还有文件post-commit 已转换为文件权限755亚历杭德罗德里奥


    非常感谢Steves的快速响应!确认选项3工作得非常好,为了更加丰富答案,如果其他人也想这样做,这就是我在“post commit”钩子上使用的代码(注意no扩展):#/bin/sh sudo svn update[path to working copy]>>>[path to log]当然>>[path to log]是可选的。此外,文件提交后被转换为文件权限755。我很高兴@AlejandrodelRío-很高兴能提供帮助。
    #!/bin/sh sudo svn update [path to working copy] >> [path to log]