如何处理长期存在的特性分支?

How to deal with long-lived feature branch?

我正在开发一个长期存在的功能分支。不幸的是,我不能把所有的时间都花在这个功能分支上,我不得不在日常编码的主干和空闲时间的功能分支之间来回切换。

我正在尝试将主干合并到功能分支中以使功能分支保持最新状态,但遇到了很多冲突,我才意识到原因:

解决冲突后,我将修复后的文件提交给Branch,但是文件的Trunk版本没有改变。它总是会与分支文件发生合并冲突,即使冲突已解决。例如,见下面的冲突:

然后我通过更改文件的 Branch 版本来解决此冲突,然后将其提交给 Branch。分支现在看起来像这样:

现在,如果我再做一次合并,我仍然会在第 3 行遇到冲突,因为文件的 Trunk 版本从未更改过:

问题:在合并和处理冲突方面,你如何处理长期存在的分支?

您使用的 SVN/TortoiseSVN 是什么版本?

当您从 Trunk 合并到 Branch 时,您是否提交 mergeinfo 更改?

据我所知,如果您使用的是现代版本的 SVN(1.10.x 或更新版本)并且您正在正确提交 mergeinfo 更改,则应该没有冲突。

The svn:mergeinfo property is automatically maintained by Subversion whenever you run svn merge. Its value indicates which changes made to a given path have been replicated into the directory in question.

查看 Mergeinfo and Previews chapter of the svnbook 了解更多详情。