Tfs 按功能划分的分支-优势/劣势?
我目前在一个项目中工作,分支和合并从一开始就没有很好地工作。为了改变这一点,我们一直在讨论各种不同的方法。我假设每个人都有自己的哲学,关于如何做这类事情,所以它似乎也在这里 我们一直在讨论的一件事是按特性进行分支。我们碰巧对这种方法的好坏有着非常不同的看法 你以前有这样做的经验吗?效果好吗?你有问题吗?什么样的问题Tfs 按功能划分的分支-优势/劣势?,tfs,branch,branching-and-merging,Tfs,Branch,Branching And Merging,我目前在一个项目中工作,分支和合并从一开始就没有很好地工作。为了改变这一点,我们一直在讨论各种不同的方法。我假设每个人都有自己的哲学,关于如何做这类事情,所以它似乎也在这里 我们一直在讨论的一件事是按特性进行分支。我们碰巧对这种方法的好坏有着非常不同的看法 你以前有这样做的经验吗?效果好吗?你有问题吗?什么样的问题 我知道这个问题不会有一个正确的答案,但我发现听到世界各地其他开发者的意见非常有趣,stackowerflow似乎是一个很好的地方 特性分支的替代方法是特性切换(即代码中的一个开关,可
我知道这个问题不会有一个正确的答案,但我发现听到世界各地其他开发者的意见非常有趣,stackowerflow似乎是一个很好的地方 特性分支的替代方法是特性切换(即代码中的一个开关,可以使特性可用或不可用)。在这方面,它们可能非常有用。它们可以允许开发和部署新功能,但只有在切换……切换良好(这甚至是一个词)时才可用。我想这有点像谷歌实验室的想法 这里需要注意的一点是,如果在开发过程中没有仔细考虑和测试这些切换,它们本身也可能导致戏剧性的结果。实际上,您正在增加您需要执行的测试量,以查看在启用和禁用功能时的行为。如果您正在开发多个功能,那么您需要了解它们如何与启用/禁用状态的各种组合交互 话虽如此,如果做得好,它们也会带来巨大的好处。您可以向某些用户(超级用户或该功能的拥护者等)发布某项功能,而不会影响所有人。如果它被认为是导致问题的原因,则可以通过更改某些配置元素存在的DB记录来关闭它 一旦一个给定的特性被认为已经通过了测试,建议删除该切换,使其成为整个应用程序的一部分 话虽如此,我并不认为特性分支是不好的,但它确实依赖于每个人理解源代码管理和合并的概念,并确保分支不会与主分支太不一致,从而导致大规模OMG类型的合并
我最近参加了一个由Thoughtworks主办的会议,Martin Fowler在会上讨论了这个话题。会谈的重点是持续交付,以及这如何有助于克服缓慢和高风险的部署。有关更多信息,请参阅或仅搜索持续交付。我们按功能使用分支,它对我们非常有效。最大的优点是,功能团队知道,在新功能集成(在我们的例子中是集成到Main中)之前,他们正在进行的工作不会影响其他功能团队 当我们完成一个新功能(分支已合并到Main)时,我们将分支移动到分支历史文件夹中。这使得开发人员需要查看的分支(文件夹)的数量保持在最少
在我们的情况下,没有人在主要部门工作。所有开发都在功能分支中完成。初始开发(在首次发布到生产之前)在开发分支中完成。在第一次真正投入生产后,所有的开发都在一个新的功能分支中完成。如果您有一个中小型团队,那么当您不真正需要完全分支隔离时,请避免额外的分支。。。特别是如果开发团队的文化反对正确地进行分支和合并。也许作为交换,需要维护更少的分支,请确保允许进行合并的所有开发人员都严格遵循合并实践。搁置集(在TFS中)和短期特征分支是将合并开销和相关风险降至最低的好技术 细节 以下是我发现的一种模式,可以平衡生产率和版本控制安全性(对于由约25名开发人员和约3名测试人员组成的团队):