git svn cherry pick忽略警告

mic*_*nko 33 git git-svn

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

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

这个警告是关于什么的?

me_*_*and 48

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

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

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

更详细:

假设你有两个分支Subversion版本库A,并B与匹配的Git SVN仓库:

A B   

*    r6
| *  r5
* |  r4
| *  r3
|/     
*    r2
*    r1
Run Code Online (Sandbox Code Playgroud)

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

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