【问题标题】:How to deal with long-lived feature branch?如何处理长寿命的功能分支?
【发布时间】:2019-04-22 19:01:28
【问题描述】:

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

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

解决冲突后,我将固定文件提交到分支,但文件的主干版本没有更改。它总是会与分支文件发生合并冲突,即使在冲突解决之后也是如此。例如,看下面的冲突:

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

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

问题:在合并和处理冲突方面,您如何处理长寿分支?

【问题讨论】:

  • 为什么说最后一种情况(i.stack.imgur.com/aks0W.png)会产生冲突呢? “Branch”中只有一行,合并应该没有问题。
  • 您使用什么 Subversion 客户端和服务器版本?您的存储库具有什么 FSFS 存储库文件系统格式?是格式 3 还是更高格式?

标签: svn tortoisesvn branch


【解决方案1】:

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

当您从主干合并到分支时,您是否提交 mergeinfo 更改?

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

svn:mergeinfo 属性由 Subversion 自动维护 每当你运行 svn merge。它的值表示对 给定路径已复制到相关目录中

查看svnbookMergeinfo and Previews 章节了解更多详情。

【讨论】:

  • 他们的存储库可能具有 FSFS 格式版本 2 或 1,并且必须升级。合并跟踪 /svn:mergeinfo 在 SVN 1.5 中实现,FSFS 格式为 3。SVN 1.5 于 10 多年前发布。但是,您仍然可以找到 SVN 1.4 服务器,因为管理员不需要升级它们 - SVN 可以正常工作。强烈建议升级到 SVN 1.10.x。
  • 感谢您的回复。我们正在运行 SVN 1.11。我不知道为什么,但是当我第一次尝试从主干合并到分支时,我会遇到冲突,修复冲突,将固定版本提交到分支中(因为合并发生在工作中复制)。然后我会进行另一个合并,我刚刚修复的相同冲突会再次出现。
  • 我们还使用了AnkhSVN,一个Visual Studio的插件,它与SVN集成。合并后,我将修复所有冲突,并提交所有将出现在 AnkhSVN 插件的“Pending Changes”选项卡中的合并更改。但是,我完全忘记提交未出现在该选项卡中的项目(无论出于何种原因)。然后我从根级别进行了提交,显示了所有合并的文件,这似乎解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
相关资源
最近更新 更多