在最新版本的git中,引入了配置svn.pushmergeinfo
:
config key:svn.pushmergeinfo
此选项将导致git-svn尝试在可能的情况下自动填充SVN存储库中的svn:mergeinfo属性。目前,这只能在提交非快进合并时才能完成,其中除第一个之外的所有父级已经被推入SVN。
我们使用它来建立一个混合环境,其中一些开发人员使用SVN,一些人使用Git-SVN。当在Git中分支和合并SVN分支然后git svn dcommit
- 回到SVN时,这很有用,并且它实际上在几乎所有情况下都正确地填充了mergeinfo属性。但是,在特定情况下,它会错误地执行。
这主要发生在将分支合并到主分支(主干)之后,将主干合并到该分支(实际上,相当于SVN重新集成)。
从中继线到分支机构的合并为该分支上的中继添加了一个mergeinfo线路(根据需要),但是从分支机构返回到中继线的重新集成 - 复制将线路复制到中继线的mergeinfo,从而有效地创建了一个自引用线路。 trunk的mergeinfo属性指向自身。据我所知,这种自我引用永远不应该发生,并且单独使用SVN时不会发生。所以,我认为这是一个git-svn错误(我已经报告过here)。这反过来会产生影响其他SVN用户的问题,并在未来提交时破坏mergeinfo。
我正在寻找的是一种解决方法:如何轻松告诉git不要为要合并的分支复制mergeinfo行,或者我怎样才能告诉SVN删除那些自我提交时的引用(或任何其他解决方案不会导致自引用mergeinfo行但保留自动svn的其他特性:从git创建mergeinfo)。
(为了澄清,我不正在寻找人们向我引用git手册或者告诉我“与Git-SVN合并是危险的并且不受支持”。如果可以的话,请回答帮助解决问题或提出替代工作流程。指向相关的git代码也会有所帮助,因为它们可能允许我创建一个补丁来解决这个问题。谢谢!)
答案 0 :(得分:8)