0

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

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

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

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

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

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

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

据我了解, svn:mergeinfo 应该是空的,这些修订应该被“省略”或者这样可以吗?

4

1 回答 1

1

子文件夹上的此信息显示您(意外?)合并到子文件夹(不是在主干上,而是在 /trunk/app/module 上)。

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

SVN-Team 不建议仅合并子目录(请参阅此处的 SVN 书籍主题

避免子树合并和子树合并信息。仅在分支的根上执行合并,而不是在子目录或文件上执行合并(请参阅名为“子树合并和子树合并信息”的部分)。

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

此外,始终可以(不推荐!)删除合并信息属性,以“重置”合并跟踪功能。主要通过也删除分支来完成。那么第二次合并的风险通常可以忽略不计。

于 2018-03-07T16:23:18.123 回答