2010-06-02 38 views
1

我是SVN的新手,并且在我的Dreamhost测试服务器上(它有一个Subversion“一键安装”功能)在本地进行了实验。颠覆:建立一个远程仓库并运行我的网站吗?

已经找到我的身边,我肯定卖功能的方式,而是用它来管理我的工作网站有点失落(不与Dreamhost的托管,所以不提供一键安装SVN)。

我是在想,我可以建立在我的网站根目录库(其中包含的所有文件)正确,然后当我开发新的功能和运行一个承诺,这将更新我的网站?这是这种事情的正确工作流程吗?

如果是这样,有没有设置这样的事情了我的远程服务器上的标准方式吗?

谢谢。

回答

2

要自动更新网站根目录,请使用post-commit hook进行调查。

后提交后变更已成功地致力于SVN仓库运行挂钩。因此,你可以让你的post-commit钩子在网站根目录上触发一个SVN UPDATE。

+0

这看起来像我需要的解决方案,加上斯图尔特关于我的远程站点是工作副本的想法。谢谢! – 2010-06-03 08:39:08

+0

我实际上已经写了一个钩子脚本来完成这个(在Linux服务器上):http://www.ellipsix.net/ext-tmp/autoupdatehook.sh随意使用它或修改它,只要你喜欢。 – 2010-06-03 18:32:11

5

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

像这样的东西肯定是可以的。为了让术语正确,在subversion中你有一个存放在你的Subversion服务器上的“存储库”。除非通过使用svn客户端执行操作,否则您永远不会触及存储库本身。您可以“检出”存储库(或其子集)的多个“工作副本”以自行访问您的源文件。为了实现你的要求,你需要在你的开发机器上创建一个工作副本,并在那里进行修改。满意后,您将它们“提交”到您的存储库。在您的生产位置上,您将不得不创建同一存储库位置的另一个工作副本。您需要在此工作副本中显式运行“svn update”以应用最新更改。更改不会自动传播到提交上的所有工作副本。

如果你还没有,你应该通过subversion book读取时间。这是一个非常有价值的颠覆资源和源控制原则。

+0

谢谢斯图尔特,这为我澄清了一些事情。我会把这本书再读一遍。 – 2010-06-03 08:38:39

1

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

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

将生产系统设置为本地工作副本并使用SVN UPDATE不存在部署提交的问题,这些提交可能尚未准备好部署到生产环境,但不会自动进行部署。为了解决这个问题,你可以定期在生产系统上创建一个脚本来检查仓库,就像Crusie Control或Team City这样的连续集成系统一样,并定期检查仓库是否有新的提交,然后执行更新。

在任何一种情况下,我都会建议您构建足够智能的脚本,以便仅从新的TAG文件夹进行部署。通过这种方式,您可以使用源代码管理来获得它带来的所有优势,并且只在创建新的TAG文件夹时才进行部署。

相关问题