Subversion:设置远程存储库并运行我的网站吗?

时间:2010-06-02 10:34:45

标签: svn

我是SVN的新手,并在我的Dreamhost测试服务器(具有Subversion“一键安装”功能)上本地进行了实验。

找到我的方式,我肯定已售出,但有点迷失使用它来管理我的工作网站(不托管Dreamhost,所以不提供一键式SVN安装)。

我认为我可以在我的网站根目录(包含所有文件)上设置存储库,然后当我开发新功能并运行提交时,这会更新我的网站吗?这是适合这类事情的工作流程吗?

如果是这样,有没有一种标准方法可以在我的远程服务器上设置这种东西?

感谢。

3 个答案:

答案 0 :(得分:5)

如果我正确理解您的问题,您就会尝试将subversion用作本地开发环境和生产环境之间的中介。您希望在单独的位置开发您的网站,提交更改,然后将这些更改传播到您的生产网站。如果这不正确,请回复。

这样的事情肯定是可行的。为了使术语正确,在subversion中你有一个存储在你的subversion服务器上的“存储库”。除了通过使用svn客户端执行操作间接进行外,您永远不会触及存储库本身。您可以“签出”存储库(或其子集)的多个“工作副本”以自行访问源文件。要实现您的要求,您可以在开发计算机上创建一个工作副本并在那里进行更改。如果满意,您可以将它们“提交”到您的存储库。在生产位置,您必须创建同一存储库位置的另一个工作副本。您需要在此工作副本中明确运行“svn update”以应用最新更改。更改不会自动传播到提交中的所有工作副本。

如果你还没有,你应该花时间阅读subversion book。它是一种非常有价值的颠覆资源和一般的源控制原则。

答案 1 :(得分:2)

要自动更新网站根目录,请使用post-commit hook

提交后挂钩在变更集成功提交到SVN存储库后运行。因此,您可以让您的post-commit钩子在网站根目录上触发SVN UPDATE。

答案 2 :(得分:1)

之前的两个答案都是很好的信息。但是我认为有一些问题是个好主意。如果你采用post-commit-hook的想法,我会建议脚本要足够聪明,只有在你特别希望它时才进行部署。让脚本在每次提交时进行部署都会非常严格,并迫使您放弃使用源代码控制的许多优点。

一个想法是注释中的关键字触发器,脚本可以用它来触发部署到生产。另一种方法是仅在脚本确定提交到新标记文件夹时进行部署。

将prodcution系统设置为本地工作副本并使用SVN UPDATE没有部署提交的问题可能还没有准备好部署到生产环境,但却不能自动化。要解决该问题,您可以创建一个脚本,在生产系统上定期运行,检查存储库的方式与Crusie Control或Team City等连续集成系统完全相同,并定期检查存储库以获取新提交,然后执行更新。

在任何一种情况下,我都建议您构建足够智能的脚本,以便只从新的TAG文件夹进行部署。这样,您可以使用源代码控制来实现它带来的所有优势,并且只在创建新的TAG文件夹时进行部署。