Web应用程序的版本控制 - 如何处理修订和上线计划?

时间:2010-02-25 21:44:01

标签: svn project-management

我正在使用SVN在我开发/支持的经典ASP应用程序上进行源代码管理。我根据公司的要求维护了应用程序的几个版本:

  • 发现/游乐场版 - 我在那里完成所有工作。我的工作副本
  • 开发/测试版本(无法访问这些网站/服务器)
  • 实时版(无权访问这些网站/服务器)

这是我遇到麻烦的时候:

  1. 在项目A上完成工作并提交
  2. 使用日志中的导出
  3. 将项目A提升为开发/测试
  4. 项目A出现问题,并在Dev / Test
  5. 中停滞
  6. 项目B出现,准备并提交
  7. 项目B现在建立在项目A上,但项目A的某些部分尚未准备好迎接黄金时间
  8. 除了“小心不要搞砸任何东西”之外,我还能做些什么来确保项目的某些部分能够在开发过程中停滞而不会阻止所有事情?

    这个过程中Web服务器的必要性似乎给我带来了麻烦。我知道我可以在进入开发/测试时将项目A分支,然后在它生效时将其合并回主干。同样,我可以从分支机构之前恢复我的游乐场,并且在没有任何项目A有可能意外上线的情况下进行项目B.但是,我不能在我的操场上玩Project A.我是否必须为每个分支生成一个新的游乐场网站?

    我知道这可能对我的情况来说太过具体了,但是我希望其他人有类似我的情况。

    谢谢!

    修改

    这是我目前的解决方案:维护修复 - 可以立即进行生产的更改 - 可以在WC中进行并提交到主干。任何依赖于项目的东西都会分支。沿着测试路径的工作副本可以切换到指向该分支以测试项目。分支必须保持最新,我们可以使用提交钩子来通知人们。当分支准备好部署到生产环境时,它将合并回主干并进行部署。

    这是有道理的并且可行,对吧?

1 个答案:

答案 0 :(得分:1)

我们使用一个SVN实例控制我们的代码库,并使用另一个实例来控制每个测试阶段和最终生产的Web服务器的环境和内容。拥有每个环境的历史记录已经多次拯救了我们。保持您的日志消息有意义肯定会得到回报。

我从发送到我们的Dev服务器的自动构建导出到系统测试文件的签出版本,然后将更改提交给它。更新Web场中的服务器只是更新到所有框上的HEAD修订版的情况。使用System Test中的导出更新分段,然后最终从分段导出更新Production。这部分内容是脚本化的,但手动监督很方便。可能最困难的是确保配置文件对于每个环境都是正确的,但如果您不更改它,则不要部署它。

您可能仍希望掌握功能分支或发布分支以及重新组合源所需的strategies。无论你的测试策略有多好,你都可能需要在生产中修改一些你从未预料到的东西。

需要注意的一点是,不要将客户端版本1.6x与1.5x SVN服务器一起使用,因为这是我们的合并流程,直到我们升级看到; http://ferventcoder.com/archive/2009/06/10/subversion-1.6-tree-conflicts-and-the-incompatibility-of-subversion-1.5.aspx

修改

我们的部署环境中的每个服务器都安装了TortoiseSVN客户端,以便系统管理员具有用于更新已检出的存储库的GUI。

我还为他们制作了一些脚本,这些脚本使用SVN命令行实用程序通过自动作业更新服务器上的一些存储库。这允许我们的内容团队将文件提交到其服务器资源文件夹的本地副本,然后每小时更新一次。他们只能访问我们使用SVN服务器上的auth文件控制的特定文件夹集。

我们有两台实际安装了SVN服务器的机器,每天都会备份。一个用于源代码的存储库,另一个用于在每个环境中部署的最终构建。它确实意味着我们在每个环境中都有一个完整的重复存储库,但存储不是问题。