svn与svn合并:externals导致大量添加svn:merge-info属性 - 任何解决方案?

时间:2011-11-18 16:40:02

标签: svn merge svn-externals svn-merge

如果你有一个带有svn:external链接的目录(我们在工作中广泛使用),那么无论何时在分支之间合并该目录,目录中的每个文件都会获得一个新的svn:merge-info属性。 / p>

我猜是因为外部链接没有被合并改变,所以svn正在计算它自己的子树(与Why would svn merge of a branch with no changes causes untouched files to modify svn:mergeinfo property相关但不是同一个问题)。

这会导致实际更改隐藏在所有合并信息属性更改中,从而使更改集既大又几乎不可读。 (我们有一个具有足够合并历史和外部的分支,合并一行更改可以产生500Kb差异。)

到目前为止,我们唯一能做的就是在提交之前使用svn:external链接从子树中删除合并属性。这可以防止使用--reintegrate,这意味着如果它们发生,我们就无法跟踪真正的子树合并。

有没有人有更好的解决方案?

1 个答案:

答案 0 :(得分:3)

svn:merge-info不是为了阅读,但我理解你的问题。

一种解决方案可能是升级到1.7(服务器和客户端)。在1.7中有关于merge-info的一些工作可能会对你有帮助。

听起来你已经理解了merge-info,但无论如何这里还是一些额外的信息。

节点(文件或目录)上的merge-info从父级(director)继承到您的工作副本,然后进一步继续存储库。 svn尝试仅在需要的节点上编写merge-info ,即它与父节点不同的地方。

要防止节点上的合并信息,请确保尽可能靠近存储库根目录进行合并,并且在尝试合并上层目录中的 hole 之前是否发生了任何其他合并。这将导致没有变化,但填补合并信息制作Mergeinfo Elision中的空白更有效。

我发现在进行合并时,某些版本的svn无法正常工作。在进行部分合并时,1.6.6(ubuntu 10.04中的那个)不能很好地工作。