SVN:冲突有多可靠?

SVN:冲突有多可靠?,svn,merge,Svn,Merge,我得把树枝和树干合并起来。两者在结构上有很大的不同,有六种以上的树冲突,可能还有五十种左右的文本冲突。可以理解,我对这次合并有点紧张 我想知道产生冲突的标准到底是什么。假设一个函数F效率很低,所以分支中的开发人员将其重新编写为一个辅助函数G,主干中的开发人员以不同的方式重新编写。在这个场景中,我知道函数F将产生冲突,函数F以两种不同的方式重新编写。但是,是否会在不属于主干版本的函数G上产生冲突?或者函数G是否会被实际应用并避免任何注意?我担心合并可能会导致这种混乱的代码。Subversion无法

我得把树枝和树干合并起来。两者在结构上有很大的不同,有六种以上的树冲突,可能还有五十种左右的文本冲突。可以理解,我对这次合并有点紧张


我想知道产生冲突的标准到底是什么。假设一个函数F效率很低,所以分支中的开发人员将其重新编写为一个辅助函数G,主干中的开发人员以不同的方式重新编写。在这个场景中,我知道函数F将产生冲突,函数F以两种不同的方式重新编写。但是,是否会在不属于主干版本的函数G上产生冲突?或者函数G是否会被实际应用并避免任何注意?我担心合并可能会导致这种混乱的代码。

Subversion无法保护您免受语义冲突的影响。就这一点而言,我不知道有哪个版本控制系统可以

在您的具体示例中,答案取决于。冲突中可能包含G函数。但是如果这两个函数在文件中相距足够远,并且在G函数附近没有任何其他变化,那么合并仍然可以保留G

当然,还有许多其他方法可以获得版本控制系统永远无法捕获的语义冲突。例如,假设有人修改函数F以获得一个新参数。另一个开发人员在另一个文件中添加了对函数F的新调用,而更改F的开发人员既不会触及该文件,也不会在其工作副本中进行更改。开发人员提交新函数F时没有冲突,即使在语义上他的更改与存储库中的现有代码冲突。对于我们今天使用的版本控制系统,解决方案是团队沟通、代码审查和测试

避免这种情况的唯一方法是,进行合并的工具理解语言,而不仅仅是面向行的冲突。这当然意味着您的版本控制工具需要支持您使用的每种语言。这将大大降低它作为通用工具的实用性

然而,有一个语义感知合并工具的实现。对C#和Java支持这一点。Subversion支持外部合并工具,据我所知,一些用户使用此工具处理此类情况


实际上,这些问题并不经常出现。

谢谢您的回复!