我想做一小组独立于我在项目上的其他开发所做的更改。我一直以此为指导。
我首先做了一个从/trunk/app/module 到/branches/pete/feature-branch 的 svn cp,这是 r393
经过一些更改,并在主干和分支之间来回合并以保持最新状态,我完成了我的功能,并回到了主干上的工作。
经过几次修订后,我决定也许我应该清理我的功能分支,所以我试图重新集成它。
- 我签出了功能分支和主干的新副本。
- 我将主干更改合并到功能分支中并提交它们
- 然后我在主干上做了一个合并 --reintegrate ^/branches/pete/feature-branch 导致 r434
从代码的角度来看,一切看起来都不错,但现在我的主干/应用程序/模块仍然有一个 svn:mergeinfo 属性。
$ svn pg svn:mergeinfo
/branches/pete/feature-branch:393-433
据我了解,svn:mergeinfo 应该是空的,这些修订应该被"省略",或者这可以吗?
子文件夹上的此信息显示您(意外地?)合并到子文件夹(不在主干上,而是在/trunk/app/module 上)。
Subversion 现在知道它不会再合并这个分支的这些修订版了。通常你应该只合并在最上面的文件夹,所以合并信息只在这个文件夹上。
SVN-Team不建议仅合并子目录(请参阅此处的SVN书籍主题)
避免子树合并和子树合并信息。仅在分支的根目录上执行合并,而不在子目录或文件上执行合并(请参阅名为"子树合并和子树合并信息"的部分)。
仍然所有的合并都是可能的,但是你最终在不同的文件夹级别上有很多(不同的)合并信息,这使得以后更难弄清楚发生了什么以及为什么SVN会以这种方式行事。
此外,总是可以(不推荐!)删除合并信息属性,以"重置"合并跟踪功能。主要是通过删除分支来完成的。那么第二次合并的风险通常可以忽略不计。