我如何使用后提交挂钩从SVN复制提交的文件到Web目录?

我的Ubuntu服务器安装了Apache和Subversion。 我将此服务器用作登台服务器,纯粹用于testing目的。 我使用Apache来托pipeWeb应用程序,Subversion保留源代码的版本化副本。

我目前的工作stream程

  • 对文件进行更改
  • 提交文件到Subversion版本库
  • 通过SFTP将新file upload到Apache公共目录
  • 查看我的networking浏览器中的更改

如果我的工作stream程如下所示,我会更加快乐:

  • 对文件进行更改
  • 提交文件到Subversion版本库
  • 在后台,Subversion将提交文件的副本放入Apache公共目录
  • 查看我的networking浏览器中的更改

我有很less的服务器pipe理经验,任何帮助或指针表示赞赏。 我听说后提交的钩子是我需要的,而且我可以写bash脚本来做到这一点,但我不知道从哪里开始,并没有真正find任何东西后,谷歌search很多。

谢谢!

“官方”的答案就在这里。

我正在管理我的存储库中的一个网站。 如何在每次提交之后使活动站点自动更新?

可以这样做,但是自动将每个提交都推送到生产网站并不总是一个好主意。 有时候还有其他需要改进的地方,因为新代码在那里而破坏了网站,但是数据库模式还没有被更新,这只是令人尴尬的。

我倾向于做的是使服务器结帐svn的副本,然后,一旦我准备好与其他一切必须发生的事情,我做一个svn更新。

但是如果你真的想要的话,你可以把命令放在提交后触发器中,它会自动为你做任何事情。 这可能包括在服务器上运行迁移脚本(如果存在此更改的话),以处理任何需要发生的非代码更改。

我认为你应该问自己的一个真正的 ,首要的问题—你当然可能已经问过自己—这是:“在部署之前我怎样才能最容易地测试我的代码呢?

我认为一个很好的答案就是在你的开发盒上安装Apache,然后运行它作为你自己的用户,在/home/richardhenry/src/mywebsite webroot和/或cgi路径下(或者你检查你的代码)。

这样,你可以测试你的代码,甚至不提交。 因此,你不会用破碎或无用的提交来清理你的主干。 一般来说,保持独立的事物独立往往是一个好主意(TM)。

或者,使用rsync将Web服务器与工作目录同步,或者编写一个脚本,将文件从开发箱中推送到登台服务器,并添加运行脚本(或调用rsync)的Makefile规则。 如果你想要真的很花哨,可以使用inotify或其他文件通知监视器来自动运行你的脚本。