Version control 版本控制中的分支可能会遇到哪些问题?

Version control 版本控制中的分支可能会遇到哪些问题?,version-control,branch,Version Control,Branch,您能推荐一篇文章、一本书或一篇会议论文,介绍软件团队在版本控制环境中分支可能遇到的问题吗?我们正在为我们的一位赞助者创建一个摘要,需要引用可靠的信息来源。到目前为止,我已经找到了和的简短评论 提前谢谢 另外,Appleton等人的文章看起来很基本,但相当陈旧。看看——它详细解释了为什么分支在某些情况下非常有问题,以及如何缓解这个问题。关键的一点是,分支根本不是问题,但将不同分支上的更改合并回来会耗费大量时间。如中所述,FeatureBranch可能会遇到语义冲突的问题 我更担心的问题是语义冲突

您能推荐一篇文章、一本书或一篇会议论文,介绍软件团队在版本控制环境中分支可能遇到的问题吗?我们正在为我们的一位赞助者创建一个摘要,需要引用可靠的信息来源。到目前为止,我已经找到了和的简短评论

提前谢谢

另外,Appleton等人的文章看起来很基本,但相当陈旧。

看看——它详细解释了为什么分支在某些情况下非常有问题,以及如何缓解这个问题。关键的一点是,分支根本不是问题,但将不同分支上的更改合并回来会耗费大量时间。

如中所述,FeatureBranch可能会遇到语义冲突的问题

我更担心的问题是语义冲突。
一个简单的例子是,如果Plum教授更改了Green牧师的代码调用的方法的名称。
重构工具允许您安全地重命名方法,但只能在代码基础上重命名。所以,如果G1-6包含调用foo的新代码,Plum教授无法在他的代码库中分辨,因为他没有代码库。你只会在大合并中发现

函数重命名是语义冲突的一个相对明显的例子。在实践中,它们可能更加微妙。测试是发现它们的关键,但是要合并的代码越多,冲突的可能性就越大,修复它们就越困难。
冲突的风险,尤其是语义冲突,使大型合并变得可怕。

请参见中的语义冲突示例


一旦考虑到这一点,您还需要区分(集中式与分布式VCS),因为DVC将为分支带来一个正交维度:“(推/拉到远程存储库,这意味着您可以在“同一”分支上工作,同时仍然处于完全隔离状态,因为您正在处理本地克隆存储库)。
像SVN这样的CVC有自己的功能,DVC应该非常擅长


另请参见“

很抱歉,我找不到实际语句的引用,但我记得我说过类似这样的话:“您永远不希望分支相乘,您总是希望将分支重新合并在一起”。分支未完成的时间越长,一个分支中的更改与另一个分支中的更改冲突的可能性就越大。功能分支是您的朋友,但我建议您经常进行更改,以跟上“主干”或“上游”的道德等价物的变化,并确保在满足其需求后尽快将分支合并回“主干”或“上游”

也许更简洁地说,我总是发现在创建分支之前定义分支的生存期很有用。知道你为什么要创建一个分支,它能生存多久,什么时候你决定合并它或者扔掉它