如何在重新集成时删除挥之不去的 svn:mergeinfo 属性?

How to remove lingering svn:mergeinfo properties on reintegrate?

我想独立于项目的其他开发工作进行一小部分更改。我一直在使用 this 作为指导。

我从 /trunk/app/module 到 /branches/pete/feature-branch 执行 svn cp 开始,这是 r393

经过一些更改,并在主干和分支之间来回合并以保持最新状态,我完成了我的功能,然后回到主干上工作。

几次修改后,我决定也许我应该清理我的功能分支,所以我尝试重新整合它。

  1. 我检查了功能分支和主干的新副本。
  2. 我将主干更改合并到功能分支并提交了它们
  3. 然后我在主干上做了一个 merge --reintegrate ^/branches/pete/feature-branch 导致 r434

从代码的角度来看,一切看起来都不错,但现在我的 trunk/app/module 仍然有一个 svn:mergeinfo 属性。

$ svn pg svn:mergeinfo
/branches/pete/feature-branch:393-433

据我了解,svn:mergeinfo 应该是空的,这些修订应该是 "elided" 或者这样可以吗

子文件夹的这些信息表明您(不小心?)合并到一个子文件夹(不是在主干上,而是在 /trunk/app/module 上)。

Subversion 现在知道它不会再次合并来自该分支的这些修订。通常你应该只合并最顶层的文件夹,所以 mergeinfo 只在这个文件夹上。

SVN-Team不推荐只合并一个子目录(See SVN book topic here)

Avoid subtree merges and subtree mergeinfo. Perform merges only on the root of your branches, not on subdirectories or files (see the section called “Subtree Merges and Subtree Mergeinfo”) .

所有合并仍然是可能的,但是您最终会在不同的文件夹级别上有很多(不同的)合并信息,这使得以后更难弄清楚发生了什么以及为什么 SVN 会这样。

另外,总是可以(不推荐!)删除 merge-info 属性 到 "reset" mergetracking 功能。主要通过也删除分支来完成。那么第二次合并的风险通常可以忽略不计。