2

假设我们有一个包含三个分支的大型 TFS 2010 项目:MAIN、TST 和 PRD。

策略是:每当 Sprint 完成时,MAIN 都会被复制/合并到 TST。只要 TST 被认为是稳定的,它就会被复制/合并到 PRD 中。只要 TST 或 PRD 有修复,它们就会合并回 MAIN,或 MAIN 和 TST。(别问我为什么,这个我控制不了,也不是特别喜欢。)

据我了解,在每个促销步骤中,可以:

  1. 删除目标分支并再次分支 - 这需要立即访问该分支的历史记录(它总是可以恢复,对吗?);
  2. 与acceptTheirs合并和解决- 这需要丢失可能尚未从目标合并回源的更改。

对于合并回来说,拥有祖先信息很重要。与 1. 我希望保留祖先信息。有2。我不确定。

所以,两个问题:

  1. 这两种是在分支机构之间推广软件的可能/理想方式吗?
  2. 哪些情况下没有保留祖先信息?

可能与大型存储库相关的任何额外权衡的额外积分。

4

1 回答 1

2

1.这两种是在分支机构之间推广软件的可能/理想方式吗?

如果 MAIN 有一个子分支 TST,它有一个子分支 PRD,那么在不诉诸无根据的合并的情况下,这些是唯一可能促进分支之间更改的合并。

如果这是一个理想的分支策略,则取决于许多因素,例如发布了多少并行版本和团队规模。一个很好的参考指南是 TFS Rangers http://vsarbranchingguide.codeplex.com/的分支指南,您似乎正在使用的版本是基本双分支计划的变体(您称之为 main,他们称之为 dev并且您的生产分支不是唯一标记的)。如果只有一个版本在生产中,并且发布应该始终包含所有制作的内容,那么这种分支策略效果最好。

2.哪些情况下不保存血统信息?

如果文件被复制或分支被破坏。但是,如果您需要一直删除和/或重新创建分支和/或需要连续使用acceptTheirs,则通常表明:分支策略不足,TFS 训练不足,或测试和补丁策略存在问题(生产和开发中发现的错误同时发现并修复,导致合并冲突)。

于 2012-12-11T22:55:40.687 回答