在最新版本的 git 中,配置 svn.pushmergeinfo 被介绍:

配置键:svn.pushmergeinfo

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

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

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

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

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

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

有帮助吗?
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top