2009-03-05 62 views
6

我很抱歉,如果这已经问过,但我一直没能找到具体到这种情况的一个答案:设置SVN到最适合开发 - > QA - > PROD

对于我们的网站应用程序,我们有3个系统:dev,QA和生产。目前,第三方正在维护代码,但很快它就会在我们手中。我们将为每个阶段分开构建环境。另外,我们使用RAD进行代码开发,所以实际上会有一个主要步骤,即测试/沙箱。

理想情况下,我们希望以某种方式隔离每个阶段的存储库,以便我们从DEV签出,进行一些更改,在本地测试它们,并将它们复制到DEV中。如果Dev上的一切正常,我们将检查QA,等等。

我们是否应该为每个存储库分别设置存储库,或者这会落在'分支'之下,我们将为dev,QA和prod设立一个单独的分支。你能不能提供实现理想路线的最佳方式?

让我知道是否还有其他问题。

感谢 克里斯

回答

6

使用分支与合并

我们下面混淆:

当我们发布我们创建一个当前版本分支。我们在发布之间对错误进行修复,然后将它们合并回我们的主干。

我们在主干上进行开发,当我们准备发布时,我们开发QA分支。我们测试并修复它,然后将其推出,并成为我们当前的发布分支。

1

你应该可以签出或在部署过程中导出的单个存储库。

我们也有类似的设置。开发人员检查本地工作副本并在其开发环境中进行开发。当我们准备开始阶段或称为QA时,我们会对该环境执行svn导出(通常是头部,但我们始终会跟踪特定的修订版)。

在质量保证过程中,我们继续开发并部署到QA。

最后,当我们准备好生产时,我们将正确的版本从存储库导出到生产环境中。

很好用!

[编辑:就'这是分支'而言 - 你所描述的可能更像是跟踪修订。然而,分支是管理不同开发路线的一项非常重要的技术。这不应该与具有不同分支的每个阶段(开发,阶段,生活),不一定]

1

如果您正在开发一个具有轻松确认任务的开发流,此工作正常。但是,随着多个开发流程和任务被拖出或延迟的可能性,这将证明更具挑战性。然后,您需要在应用程序中使用某种时间依赖关系。您还可以使用功能分支等功能构建后合并回主干的功能。

3

退房斯科特·考恩的博客文章:

http://sleepoverrated.com/archive/2007/12/buildknowledgepromotingyourbuild/

他对促进你的代码,不同的环境有很大的文章。它将包括编写一些构建脚本,但会改进过程。它将允许它也是一些自动化的。

+0

我的旧设置的问题是农场环境。我喜欢使用teamcity并触发脚本来下载工件并安装 – 2009-03-12 08:20:12

1

我们有类似的模式。在SVN中,我们有3个分支,trunk,PREPRODPROD。每当新功能准备好尝试时,它将被合并到PREPROD分支(仅使用特定修订版本号并且仅用于特定文件),如果它通过QA,它将被提交并合并到PROD分支中。在PROD分支中提交更改时,它们将自动部署到所有生产服务器中。除了测试新功能时,PREPRODPROD是相等的。

+0

请问trunk是否反映了PROD? – 2009-03-06 14:01:44

1

我们为每个错误修复,功能或任务都有一个开发分支,涉及的项目往往有多个子分支。

最初它是一种奇怪的创建一个新的分支只是一行代码修复,但它允许将树干合并到分支,然后回归测试,最后合并回树干。

理想情况下,这意味着任何合并到主干中的内容都不会破​​坏构建,这意味着您不必担心提交代码来构建脆弱构建。

我经常在一个问题上使用多个分支,测试不同的解决方案,同时仍然获得SCM的好处。

我们还标记特定的版本或版本,允许基于已知的良好代码进行快速部署。

我们基于Web的系统中的很多都使用svn:指向特定版本的依赖项(如库和供应商代码)的外部指针。部署取自外部,而不是直接签出或导出。

相关问题