为什么SVN认为这是冲突?

时间:2016-07-14 11:55:24

标签: svn merge

如果这是一个非常明显的问题,我提前道歉 - 我是SVN的新手。我尽力寻找答案,但我找不到任何具体的解决方案。

由于程序顶部的注释块,我在合并分支时经常发生冲突。

我们在每个程序的顶部使用注释块来解释程序的内容,并跟踪更改。每次我们更改程序时,我们都会注意到我们的新变化。假设现场节目的评论栏结束如下:

* <developer 1> <date> <comment> *
* ******** END COMMENTS ******** *

两个新的开发人员开始他们自己的分支并在开发人员1下面添加他们自己的评论。当开发人员2将他们的代码放到现场时,开发人员3将其合并回他的分支。我可以看出这是一个明显的冲突,因为他们都添加了不同的新行。

住:

* <developer 1> <date> <comment> *
* <developer 2> <date> <comment> *
* ******** END COMMENTS ******** *

开发者3的分支:

* <developer 1> <date> <comment> *
* <developer 3> <date> <comment> *
* ******** END COMMENTS ******** *

所以开发者3自己解决了冲突。当他然后尝试将他的更改合并到Live中时,问题出现了。

住:

* <developer 1> <date> <comment> *
* <developer 2> <date> <comment> *
* ******** END COMMENTS ******** *

开发者3的分支:

* <developer 1> <date> <comment> *
* <developer 2> <date> <comment> *
* <developer 3> <date> <comment> *
* ******** END COMMENTS ******** *

当然,最后的情况不是冲突吗?开发人员3的代码只是有一个额外的行,所以这必须是一个简单的合并。但这反复被标记为冲突,结果如下:

* <developer 1> <date> <comment> *
<<<<<<< .working
* <developer 2> <date> <comment> *
* ******** END COMMENTS ******** *
=======
* <developer 2> <date> <comment> *
* <developer 3> <date> <comment> *
* ******** END COMMENTS ******** *
>>>>>>> .merge-right

这实际上是一个正确的冲突,还是SVN犯了错误? 我能做些什么来防止这种情况一再发生?

谢谢!

1 个答案:

答案 0 :(得分:2)

此行为是设计使然。

请考虑以设计的方式使用SVN。让开发人员使用特定于他们的登录进行提交,并坚持提交消息。将其嵌入到程序源中没有什么意义。