11

在最近的 git 版本中,svn.pushmergeinfo引入了配置:

配置键:svn.pushmergeinfo

此选项将导致 git-svn 尝试在可能的情况下自动填充 SVN 存储库中的 svn:mergeinfo 属性。目前,这只能在 dcommitting 非快进合并时完成,其中除了第一个之外的所有父级都已被推入 SVN。

我们正在使用它来建立一个混合环境,其中一些开发人员使用 SVN,一些开发人员使用 Git-SVN。这在 Git 中分支和合并 SVN 分支然后git svn dcommit-ing 回到 SVN 时非常有用,并且它实际上在几乎所有情况下都正确填充了 mergeinfo 属性。但是,在特定情况下,它会不正确地这样做。

这主要发生在将分支合并到主干(主干)时,在将主干合并到该分支之后(实际上,相当于 SVN 重新集成)。

从主干到分支的合并为该分支上的主干添加了一条合并信息行(根据需要),但是从分支返回主干的重新整合合并将该行复制到主干的合并信息中,有效地在主干的合并信息属性中创建了一个自引用行那指向它自己。据我所知,这种自我引用永远不会发生,并且在单独使用 SVN 时也不会发生。所以,我认为这是一个 git-svn 错误(我在这里报告过)。这反过来又会在未来产生影响其他 SVN 用户的问题,并在未来提交时破坏合并信息。

我正在寻找的是一种解决方法:如何轻松地告诉 git 不要复制合并到的分支的 mergeinfo 行,或者如何告诉 SVN 在提交时删除这些自引用(或任何其他解决方案'不会导致自引用的 mergeinfo 行,但确实保留了从 git 自动创建 svn:mergeinfo 的其他品质)。

(为澄清起见,我不是在找人向我引用 git 手册或告诉我“与 Git-SVN 合并是危险的且不受支持”。请仅在您可以帮助解决问题或提出替代工作流程时回答。指向相关 git 代码的指针也会有所帮助,因为它们可能允许我创建一个补丁来解决这个问题。谢谢!)

4

1 回答 1

8

只是一个更新。看起来你创建了一个补丁。

http://lists-archives.com/git/765571-git-svn-dcommit-avoid-self-referential-mergeinfo-lines-when-svn-pushmergeinfo-is-configured.html

于 2012-04-11T03:35:29.473 回答