2009-07-31 99 views
6

我正致力于将我们的开发团队迁移到Subversion并改进我们的存储库结构和流程。我们基本上使用标准的中继/分支/标签设置。我原本计划使用发布分支机构策略(分支机构/ 1.0,分支机构/ 2.0等),但现在我正在倾向于代码升级模式(测试和生产分支机构)。对我们团队的工作方式来说,这会更好一些,也更直观,但是发布会更简单一些:我们有效地需要测试分支成为生产分支。 (生产分支始终可用于维护版本,但测试分支不需要在一个版本的部署和下一个测试就绪之间存在。)颠覆代码升级

任何使用代码升级的人都可以推荐最佳方式推行从测试到生产的分支?我认为这些都是我的选择,但不知道他们是否有主要优点/缺点:

a。 b。将测试分支完全合并到生产分支中,删除测试分支
b。删除生产分支,复制生产测试,删除测试分支
c。删除生产分支,将测试分支重命名为生产

感谢您的任何建议!

回答

2

第一:选项b)和c)在颠覆中与在颠覆中相同重命名实际上是复制和删除。

这就是说,你只有两种选择:

  1. 完全合并测试分支到生产分支,删除测试分支

    这是颠覆而言干净方式。您可以在您的svn日志中看到哪些修订已合并到生产中,并且每个工作副本保持不变。

    但它带有一个价格: 您必须手动进行合并并解决潜在的冲突(如果生产分支发生变化)。

    然而,通常可以用的开销

  2. 删除分公司生产少量为此,重命名测试分公司生产

    这是容易方式,因为你只是做了很可以脚本化的小型操作。

    缺点:

    你会失效这是指向testbranch所有workingcopys

    合并跟踪更加困难,因为你不能轻松地查看旧的生产分公司(这已成为生产!)。生产分公司的直接更改会丢失(未通知)!

另外请记住,你可能不想在生产测试分支的所有提交(为什么你测试,如果一切顺利吗?)。所以我强烈建议选项A

+0

很好的解释,正是我所期待的。谢谢! – 2009-08-03 15:31:52

2

我一直认为分支是短命的,我的所有发行版本都在标签文件夹中。当需要对特定版本进行修复时,标记将被复制到分支,完成工作并创建新标记。我很好奇,看看有没有人有更好的方法。

1

您的生产分支应保持不变。用他们的版本号命名它们。 ProductName_Production_ {主要} {轻微} {}轻微。随着您从测试迁移到生产,您将创建一个包含最新版本号的新生产分支。如果您愿意,可以删除测试分支,但可以按照相同的方式处理。

作为我的构建过程的一部分,我通常会在部署下一个产品之前压缩当前的产品,以便我可以在需要时恢复到最新的稳定版本。只是一个fyi。

虽然我通常不以这种方式使用分支。我保持每个迭代标记,以便我拥有它们。我使用我的环境来推动代码从测试,到qa,到性能测试到生产。 Ziping每个包装一路回滚功能。

+0

我们已经享受了作为托管(单一实例)网络应用程序的奢华,所以在任何时候都只有一个版本在制作。我们将在部署时确定每个版本的标签;存在3个“活跃”分支,所以我们可以自由地在干线上的下一个大版本上工作,但可以修复测试和生产中的错误。 (维护分支可能比生产分支更好 - 它存在维护版本,不能反映当前正在生产的产品。) – 2009-08-03 15:50:21

0

实际上,我们并没有在代码版本级别上区分主工作分支和测试分支,但它对我来说很有意义。

我真的去像

  • 主要
  • 测试分支
    • 测试
  • 分公司生产的方法(将使用这些标签的文件夹)
    • production1 0.0

当测试完成后您将其复制到一个新的文件夹production1.1 /支。

0

我从每个版本的任何分支或主干创建一个标签。

  • 标签/ 1.0_tc1
  • 标签/ 1.0_tc2
  • 标签/ 1.0_rc1
  • 标签/ 1.0_ga

如果RC1是可以接受的,你只需再次将其标记为1.0_ga

0

为什么要进行代码迁移?改为建立迁移!

4年多来,我们只用分支机构。我们取了后备箱,并制作了我们的第一个分支,名为RB-2013.07.0.x。这个分支是2013年7月的发布分支。我们锁定了卡车,因此没有人可以对其进行更改。所有更改均在RB-2013.07.0.x中进行。一旦七月发布完成,我们锁定了RB-2013.07.0.x,因此无法对其进行更改。

与此同时,我们还从Trunk为9月发行版创建了分支RB-2013.09.0.x。开发人员在9月发行版上工作,同时开发7月发行版。

7月发布进入PROD后,我们将RB-2013.07.0.x合并到RB-2013.09.0.x中。 我们从未回到树干。我们从未迁徙过任何东西在4年多的时间里,我们从来没有丢失过任何代码,当你看到这个项目时,你确切地知道这个分支是什么。

如果您有产品问题(热修复),那么您将采用当前的产品版本 - 比方说RB-2013.07.0.x并创建分支RB-2013.07.1.x,进行更改,部署为产品,锁定分支,并将分支合并到上面的分支 - RB-2013.09.0.x。这样,你将拥有一切最新的。请记住,我们所做的每个构建都创建了一个TAG,并将其保存在TAGS目录中。

我们所做的构建中,我们添加了从SVN到内部版本号的最后部分的版本号。
构建将从开发,测试,到UAT/pre-prod,然后进入产品。如果您想知道每个构建或分支中的代码,请进入SVN并提取日志列表。