Nie*_*erg 6 svn merge mergeinfo
我试图通过将主干合并到分支中来保持功能分支最新.问题是,创建分支时存在的大约2000个文件,并且在分支和主干上保持不变的情况下只更新了svn:mergeinfo.该项目规模相当大,对我们的SVN历史的影响是如此之大,以至于它使合并提交历史无法使用,因为它标记了数千个文件已更改,即使这些文件的唯一更改是由SVN完成的本身.
我试过了
我应该提一下,在尝试这个时我一直在仔细查看SVN文档.所以不应该破坏任何规则(例如,没有切换子树,干净的本地副本等)
基本上要清理存储库,您需要在集成分支上运行以下命令,以便更改从那里开始:
C:> svn propdel svn:mergeinfo -R
即您在主干中执行此操作,以便将来的版本和功能分支不会受到污染.合并现有分支时,您可以忽略"merge root"下面的所有svn:merginfo更改,因为它们将被继承.
我在前一段时间写了一篇关于这个问题的博客,详细介绍了这个问题: -
清理svn:mergeinfo Droppings http://chrisoldwood.blogspot.com/2010/03/cleaning-up-svnmergeinfo-droppings.html
如果svn认为其合并历史记录与其父目录的合并历史记录不同,则会将mergeinfo属性添加到单个文件中.一旦发生这种情况,每次后续合并,无论多么无害,都会导致更新这些mergeinfo属性.我发现上半年这篇文章有助于了解为什么发生这种情况.
如果要避免这些常量mergeinfo更改,则必须"整理"分支上的现有mergeinfo属性.最安全但最费力的方法是svn propget -R svn:mergeinfo
在分支上运行,然后研究各个文件的mergeinfo与其父目录的mergeinfo之间的差异.您可能会发现差异很小,并且"svn合并"少量的单个修订将足以触发mergeinfo elision,从而导致所有单个mergeinfo属性消失.
如果您确信自己了解mergeinfo的工作原理,您也可以直接进入并手动编辑或删除有问题的文件中的mergeinfo.