简介:
我在2人团队工作(我们将来可能会扩展)
我们有一个web-dev服务器,我们有一个生产服务器
目前,当我们开始开发时,我们在localhost上启动它们,然后我们将它们部署到web-dev(我们可以通过已安装的驱动器访问),然后我们将这个“共享”驱动器的更改提交给SVN。在web-dev上进行最终测试,从顶部批准,然后通过FTP到我们的生产服务器
(我可以听到lynch的到来......)
是的,我知道从一个位置共享文件并从那里提交它是完全错误的,但当我了解SVN时,这并不是一个坏主意。现在我想改变它。
所以,我知道版本控制的基础知识,现在它的工作方式是错误的大时间。我已经浏览了维基百科和一些svn页面,但我找不到一个完美的解决方案,它应该如何实际工作。
你们中有些经验丰富的人能否建议这应该如何运作?
我发现的事情:
我想知道的事情:
答案 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)
我成功使用的模型如下
答案 4 :(得分:0)
我们这样做的方式非常简单,作为一个小团队,您可能能够联系。
svn up
svn up
(这也是主干的副本),我已经完成了。我还没有完成它,但是通过添加一个post-commit钩子来自动更新dev环境可以简化这个过程(正如其他人所建议的那样)。