10

我的 Ubuntu 服务器安装了 Apache 和 Subversion。我将此服务器用作临时服务器,纯粹用于测试目的。我使用 Apache 来托管 Web 应用程序,并使用 Subversion 来保存源代码的版本副本。

我目前的工作流程:

  • 对文件进行更改
  • 将文件提交到 Subversion 存储库
  • 通过 SFTP 将新文件上传到 Apache 公共目录
  • 在我的网络浏览器中查看更改

如果我的工作流程是这样的,我会更开心:

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

我几乎没有服务器管理经验,感谢任何帮助或指点。我听说提交后挂钩是我所需要的,并且我可以编写 bash 脚本来执行此操作,但我不确定从哪里开始,并且经过大量的谷歌搜索后并没有真正找到任何东西。

谢谢!

4

3 回答 3

11

“官方”答案就在这里。

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

于 2008-09-26T16:47:15.160 回答
0

可以做到,但自动将每个提交推送到生产网站并不总是一个好主意。有时还需要进行其他更改,并且由于新代码在那里而破坏了站点,但数据库架构尚未更新,这令人尴尬。

我倾向于做的是让服务器结帐为 svn 的副本,然后,一旦我准备好必须发生的所有其他事情,我就会对其进行 svn 更新。

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

于 2008-09-26T16:49:01.740 回答
0

我认为您应该问自己的真正的总体问题(当然,您可能已经问过自己)是:“如何在部署代码之前最轻松地测试我的代码?”

我认为一个好的答案是在你的开发机器上安装 Apache 并以你自己的用户身份运行它,webroot 和/或 cgi 路径位于/home/richardhenry/src/mywebsite(或任何你检查你的代码的地方)。

这样,您甚至可以在不提交的情况下测试您的代码。因此,您不会在您的树干上乱扔损坏或无用的提交。一般来说,保持独立的事物独立往往是一个好主意(TM)。

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

于 2009-05-25T21:02:28.353 回答