【问题标题】:Why does SVN think this is a conflict?为什么SVN认为这是一个冲突?
【发布时间】:2016-07-14 11:55:23
【问题描述】:

如果这是一个非常明显的问题,我提前道歉 - 我是 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 ******** *

这最后的场景肯定不是冲突吗? Developer 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 犯了一个错误? 我能做些什么来防止这种情况反复发生吗?

谢谢!

【问题讨论】:

  • 我会假设 SVN 是正确的并修复它。这不像说“这是 Subversion 的错”会让你走到任何地方。就个人而言,我会删除那些评论块。这就是源代码管理系统的用途。让开发人员在 cmets 中添加描述性检查。
  • 感谢您的回复(以及@Bathsheba)。我们确实使用带有个人登录的 SVN 提交消息,所以我同意代码顶部的注释块是不必要的。这是我们使用 SVN 之前的保留。我只是想知道是否有任何方法可以防止这些冲突的发生,因为当它们频繁发生时,解决它们很简单但很耗时。
  • 是的。删除 cmets。停止使用它们。

标签: svn merge


【解决方案1】:

此行为是设计使然。

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

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多