如何避免将大量的SVN:合并后,将后备箱合并到SVN中的特征分支

StackOverflow https://stackoverflow.com/questions/3785743

  •  05-10-2019
  •  | 
  •  

我试图通过将中继线合并到分支中来保持功能分支最新。问题是,在创建分支机构时大约有2000个文件,并且在分支和中继线上都没有触及,但除了SVN:Mergeinfo之外,它都没有更新。该项目的规模相当大,对我们的SVN历史记录的影响非常大,以至于它使Merge commits历史记录无法使用,因为它标记了数千个文件更改,即使对这些文件的唯一更改,也是由SVN完成的本身。

我试过了

  • 使用与repo相同的客户版本(1.5.2)
  • 使用我当前的客户端版本1.6.10
  • 合并一系列修订,从分支开始到头部

我应该提到,尝试此操作时,我一直在仔细研究SVN文档。因此,任何规则都不应违反(例如,没有切换的子树,干净的本地副本等)

有帮助吗?

解决方案

从基础上清理存储库,您需要在集成分支上运行以下内容,以便从那里更改风扇: -

C:> SVN PROPDEL SVN:MERGEINFO –R

即,您在树干中进行操作,以便将来发布和特征分支不会受到污染。合并现有分支时,您可以忽略所有SVN:Merginfo在“合并根”以下更改,因为它们无论如何都会继承。

我不久前写了一个关于此问题的博客,该博客更详细地涵盖了它: -

清理SVN:Mergeinfo粪便http://chrisoldwood.blogspot.com/2010/03/cleaning-up-svnmergeinfo-droppings.html

其他提示

如果SVN认为其合并历史记录不同于其父目录,则将其添加到单个文件中。一旦发生了, 每一个 随后的合并,无论多么无害,都会导致这些合并属性更新。我找到了上半场 本文 有助于了解为什么会发生这种情况。

如果要避免这些恒定的合并更改,则必须“整理”分支上现有的Mergeinfo属性。最安全,但最费力的方法是运行 svn propget -R svn:mergeinfo 在分支机构上,然后研究单个文件中的合并之间的差异和其父目录的合并。您可能会发现差异很小,并且“ SVN合并”进行少量的单个修订将足以触发合并省略,从而导致所有单独的合并属性消失。

如果您有信心了解Mergeinfo的工作原理,则也可以从犯罪文件中手动编辑或删除Mergeinfo。

如果您在没有真正更改的文件上有这样的合并。复制根本没有其他地方。另一点,您应该将存储库更新为1.6.x。

因为我对盲人不自信 svn:merge-info 属性删除,我已经实施了一种工具来分析工作副本上的当前情况,并从非root Merge-Info属性中删除了尽可能多的合并修订。经过其他人类检查和控件后,可以进行工作副本的更改。

这里是: SVN-CLEAN-MERGEINFO

请毫不犹豫地报告有关其用法以改进其的任何问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top