带有svn.pushmergeinfo的Git-SVN:如何避免自引用mergeinfo行

Avi*_*ish 11 svn git git-svn mergeinfo

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

config key:svn.pushmergeinfo

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

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

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

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

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

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

小智 8

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

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

  • 是.我的意思是回答我自己的问题,但后来得到了跟踪,因为补丁需要一些清理工作才能被接受.但是我们已经使用它几个星期了(实际上发布这个问题之后不久)它似乎解决了这个问题. (3认同)
  • 看起来这个问题的修复进入了git 1.8.3. (2认同)