因此,几天来我一直在摸索,试图想出一种有效的方法来管理 TFS 分支的发布/迭代。
情况如下:
我们有一个项目,我们有发布,并且对于每个发布,我们都有迭代。发布是我们投入生产的新版本,而迭代只是需要在 QA 中测试的开发阶段。
迭代有点像特征。假设您要开发一个网站来展示商品(迭代 1),然后出售它们(迭代 2)并在第一个版本中将其全部打包。对于 QA 修复,它在迭代分支中完成并在 QA 中合并。由于我们不在 QA 中提交,因此在合并时没有需要解决的冲突。
所以工作流程看起来是这样的(由于时间紧迫,需要做很多并行工作):
- 对于第 1 版
- 开始迭代 1 的开发
- 开始迭代 2 的开发
- 迭代 1 进入 QA
- 开始迭代 3 的开发
- 迭代 1 QA 已完成
- 迭代 2 进入 QA
- 第 2 版开始...
在简历中,大量并行开发,一次在 QA 中进行一次迭代,当所有版本的迭代都通过 QA 时,它会进入生产阶段。
所以我们需要提出一个分支解决方案,允许在开发分支之间轻松合并,然后进入一个 QA 分支。到目前为止,我们想出了这个分支结构
- Main
|- QA_Release_1
| |- DEV_Iteration_1
| |- DEV_Iteration_2
| |- DEV_Iteration_3
|- QA_Release_2
|- ...
有了这个,我们可以很容易地在 dev 分支之间合并。但是在迭代 1 QA 结束的某个时刻,我们禁用了分支(通过删除它,或者拒绝访问签出/签入)。当那个时候到来时,策略是重新设置DEV_Iteration_2
to QA_Release_1
。
为此,我们需要进行毫无根据的合并,这会产生很多冲突。如果我理解正确,毫无根据的合并只是一个文件夹比较,没有考虑之前发生的变更集合并。
所以我想第一个问题是我们这样做会给自己带来多少合并麻烦(如果有的话)?是否可以忽略巨大的合并并在重新调整时解决大量冲突?
其次是:有没有更有效的方法来实现这个目标?
编辑:我想念git ...
我们继续寻找解决方案,一位同事给我发了这个链接:
也就是说,如果你把与 git 直接相关的东西拿出来,这正是我们需要做的。在 TFS 中它可能看起来像这样:
- Main
|- Develop
|- QA_Release_1
|- DEV_Iteration_1
|- DEV_Iteration_2
|- QA_Release_2
问题是,TFS 不喜欢跳过分支。只要您不合并父级或子级,就将其视为毫无根据的合并。因此,由于QA_Release_1
是在 下创建的Develop
,它不会轻易合并到Main
. 这让我回到我的第一个问题:毫无根据的合并是一个陷阱吗?