使用版本控制工作流进行Web开发

时间:2009-07-16 10:28:43

标签: svn version-control

简介:
我在2人团队工作(我们将来可能会扩展) 我们有一个web-dev服务器,我们有一个生产服务器 目前,当我们开始开发时,我们在localhost上启动它们,然后我们将它们部署到web-dev(我们可以通过已安装的驱动器访问),然后我们将这个“共享”驱动器的更改提交给SVN。在web-dev上进行最终测试,从顶部批准,然后通过FTP到我们的生产服务器 (我可以听到lynch的到来......)
是的,我知道从一个位置共享文件并从那里提交它是完全错误的,但当我了解SVN时,这并不是一个坏主意。现在我想改变它。

所以,我知道版本控制的基础知识,现在它的工作方式是错误的大时间。我已经浏览了维基百科和一些svn页面,但我找不到一个完美的解决方案,它应该如何实际工作。

你们中有些经验丰富的人能否建议这应该如何运作?

我发现的事情:

  • 我们应该在我们的机器上处理本地副本
  • 然后我们向SVN提交更改。

我想知道的事情:

  • 我们如何在SVN提交后进行web-dev更新?
  • 如何将补丁部署到生产服务器? ftp文件?这是你做的吗?或其他一些聪明的解决方案?
  • 我应该了解的关于web-dev工作流程的任何其他内容。

5 个答案:

答案 0 :(得分:6)

Subversion具有post commit hooks,允许您对提交执行操作。

您还可以查看CruiseControl.net或Team City等持续集成解决方案。

我们的流程是各个开发人员在本地配置上工作。我们承诺Subversion和CruiseControl.net在每次提交时都检查并构建系统。

有一个为每周运行的更新安装程序的预定构建,并在QA用于验证修复的服务器上更新安装。验证修复后,有人(手动)应用生产站点上应用于QA服务器的更新。

答案 1 :(得分:2)

我建议查看post commit hooks,比如nickd建议。你甚至可以拒绝提交,如果它无法构建(比如你从某些'源'文件生成HTML文件,如果那个构建失败,你可以期望这个人在提交之前修复它)。

  
      
  • 我们如何在SVN提交后进行web-dev更新?
  •   
  • 如何将补丁部署到生产服务器?
  •   

自动,通过钩子,或者您可以在生产机器上考虑手动“svn更新”,这样您就可以控制何时,使用哪个版本等。

SVN book很棒。人们只能阅读相关章节,稍后再回来查看更多内容。您使用的是主干和标签 - 它们是用于svn使用和释放控制的面包和黄油。

答案 2 :(得分:2)

这就是我几年来一直在做的事情。

Dev Server - 位于内部,包含LAMP堆栈,存储库和工作副本。它与生产服务器具有相同的软件版本。

Production Server - 具有repo工作副本的Staging环境,还具有非svn版本项目的生产环境(即实时站点)。

开发人员 - 在本地计算机上拥有LAMP堆栈和存储库的工作副本。

典型流程:

开发人员更新项目的工作副本。在本地副本上工作,当完成当前更改并且无错误时,它们会将副本复制回存储库。

提交后挂钩更新Dev Server的工作副本。您可能希望手动执行此操作,尤其是在团队开始增长的情况下。

如果在Dev Server上进行了更改,则会手动更新Staging环境中的工作副本。

如果更改在暂存环境中有效,那么我们使用RSYNC将任何更改从暂存环境的工作副本推送到生产环境。

显然,这是一个非常一般性的解释,因为您希望将单元测试等内容集成到流程中,但我希望这会有所帮助。

答案 3 :(得分:0)

我成功使用的模型如下

  • 使用分布式版本控制系统,如Mercurial或Git
  • ,而不是颠覆
  • 所有开发人员都有一个本地存储库,他们在部署期间在本地提交
  • 还有一个额外的测试存储库,所有开发人员都将其更改推送到完成之后。这由QA检验并经过测试
  • 如果测试的存储库一切正常,则会对其进行标记,然后将其推送到生产存储库

答案 4 :(得分:0)

我们这样做的方式非常简单,作为一个小团队,您可能能够联系。

  • 开发在localhost上完成,并提交给trunk的分支。
  • 对于QA,分支与trunk合并,dev环境(trunk的副本)只执行svn up
  • 如果QA中的所有内容都很好,我会在实时环境中执行svn up(这也是主干的副本),我已经完成了。

我还没有完成它,但是通过添加一个post-commit钩子来自动更新dev环境可以简化这个过程(正如其他人所建议的那样)。