git svn cherry pick忽略警告

时间:2012-02-24 11:23:44

标签: git git-svn

当我运行git svn fetch时,它有时会打印以下警告:

W:svn cherry-pick ignored (/path/in/svn:<svn revision number list>) missing 55 commit(s) (eg 9129b28e5397c41f0a527818edd344bf264359af)

这个警告是关于什么的?

1 个答案:

答案 0 :(得分:45)

当有人与Subversion进行“樱桃挑选合并”时,Subversion会记录在所涉文件和文件夹的元数据中合并的提交。

当您执行git svn fetch时,Git会看到合并元数据,并尝试将其解释为Git远程分支之间的合并。所有这些消息意味着Git试图这样做,但失败了,所以它会将它记录为常规提交而不是合并。

这不是你需要担心的事情,除非你看到Git如何选择Subversion提交的错误。

更详细:

假设您有一个包含两个分支AB的Subversion存储库,以及一个匹配的Git svn存储库:

A B   

*    r6
| *  r5
* |  r4
| *  r3
|/     
*    r2
*    r1

如果要将分支B重新集成回分支A,则可以使用分支A工作副本中的命令,例如svn merge -r 3:HEAD ^/branches/B或{{1} }}。 Subversion会记录svn merge --reintegrate ^/branches/B标记中的元数据,记录此合并已发生,下一个svn:mergeinfo将看到此元数据,看到分支git svn fetch已重新集成到分支B中,并将其历史记录中的相应提交记录为合并。

如果您只想在分支A中从分支B进行一次提交(比如r3添加了您需要的功能),但是您还不想重新整合整个分支,那么您需要而是使用像A这样的Subversion命令。同样,Subversion会记录合并元数据,Git会看到这个,并尝试解决它是否可以记录分支合并,如上例所示。在这种情况下,它不能:branch svn merge -c 3 ^/branches/B不包含分支A的r5之类的东西。这就是触发这个警告的原因。