我们最近创建了一个分支,其中包含为特定客户定制的代码版本。我们同时在两个分支上工作,将“常见”更改提交到主干,然后将它们合并到分支。
最近,我们遇到了麻烦。在 trunk/bar.c 中,我们(除其他外)有一个 foo() 函数。现在,在 branch/bar.c
中,该函数已被删除,因为它在那里没有用处。在 trunk
中修改 foo()
时会出现问题。当我们将更改合并到分支(“合并修订范围”)时,TortoiseSVN“3向合并”工具显示方法上的冲突(这很烦人,但我可以看到一些原因) ),但它也显示了文件中的许多其他更改 - 这似乎是凭空出现的(看起来有点像它想显示之间所做的所有更改树干和 Twig )。这使得合并变得更加困难,因为它散布着一些不重要和旧的更改。
你有遇到过这样的情况吗?您有什么建议,特别是为了在合并过程中更容易发现重要差异?
作为(希望)临时解决方案,我将尝试 #ifdef
删除已删除的区域,以便 SVN 认为代码仍然存在,并且可以更好地进行合并。 (不幸的是,这会让代码变得有点难看,并且当删除更多函数时会变得更难看。)
最佳答案
您可能需要考虑
- 您的提交是否足够频繁,以及
- 您是否要合并正确的修订版或修订版范围。
在我看来,您的修订并没有达到您想要的粒度;也就是说,一次修订包含多项变化。要么是这样,要么你试图合并比你需要的更广泛的修订。无论如何,如果您更频繁地提交,可能会有所帮助。
对于这种特殊情况,您必须手动合并文件 - 一旦这样做,您应该能够合并不涉及 foo()
的后续修订,而无需任何干预。
关于svn - 合并到分支时发生冲突,删除代码中的一些更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1588118/