|
|
1
2
如果你愿意的话,你可以写一个工具来划分合并历史,但真正的答案是 不要那样做 .当您挑选时,您将失去任何保证,即您在源分支中测试和稳定的代码将在目标分支中以相同的方式执行。有时这没关系,但在您的情况下,它破坏了在原始未测试的开发人员签入和您的实时prod部署之间放置中间分支的整个目的。 正如在 my favorite branch/merge video 您的指导原则应该是“向下合并,向上复制”。也就是说,每当需要解构和/或应用代码差异时,就让不稳定的分支受到攻击。(另一个例子是从一个集成的应用程序中挑选特性。)同时,向稳定分支(如main&prod)提升的代码应该始终是一个直接副本,与您在源分支中为稳定所做的努力相匹配。听起来你目前正在遵循这一策略;在挑选关键人物时保留这一策略将是我使用功能分支的动机,甚至比将功能团队与其他人的崩溃隔离更重要。 正如Jim提到的,管理特性之间的依赖性是一个问题。如果您可以提前识别它们,通常的解决方案是使具有公共依赖关系的特性共享子分支。
当然,软件并不总是按计划运行。如果需要共享代码的分支位于树的另一侧(例如,如果Feature1依赖于liba,那么这根本不起作用 和 但由于结构或技术原因,功能2不适合作为B的一部分)。 |
|
|
2
1
我不认为这里有什么神奇的调料,你只需要找到一个系统,你可以为你想挑选的每一个单元修改主系统。 这可以通过单独合并每个修订来完成,这是一种痛苦,但可以得到你想要的。 或者,您可以通过一次将每个特性合并到主特性中来提高粒度。这要求您按顺序处理功能,如果您是自己的,这可能是可以的,但如果有几个人,这将是一个痛苦的,因为您必须经历一个代码冻结,其中有些人已经完成,而其他人没有。 另一种工作方式是为每个特性建立一个dev分支,这种工作方式可能更易于管理,也可能不易管理。从这个意义上讲,它不是拥有一个永远存在的dev分支,而是拥有一个短暂dev分支的集合,这些分支只存在于功能完成之前。 每个dev分支的重新集成将为您提供一个主要的清晰修订版,您可以从中挑选。 您可以获取开发分支之间的依赖关系。假设分支deva需要分支devb的一些实现,您必须将devb的必需部分合并到main中,然后将它们合并到deva中。然而,deva不应该需要devb未完成的工作,所以您(理论上)无论如何都应该能够愉快地ri那些部分。当然,由于您对Prod非常感兴趣,所以这些部分集成不必发布。 考虑到你的分支策略,我想你已经找到了这个,但是如果没有,它值得一读: http://branchingguidance.codeplex.com/wikipage?title=html&referringTitle=Home |
|
|
urlreader · 是否将自定义列添加到TFS中的UI? 7 年前 |
|
|
Mkram · Microsoft TFS研究 7 年前 |
|
|
ab_732 · TFS如何从代码审阅中排除DLL和代码注释/空白 7 年前 |
|
|
gvdm · 如何控制TFS的配置 7 年前 |
|
|
Buda Gavril · SonarQube分析任务更改构建的输出 7 年前 |