将svn补丁应用于git存储库

时间:2012-07-17 09:03:15

标签: git svn patch

好的,我已经尝试了所有可以在stackoverflow上找到的答案,但显然似乎没有人能够解决我的问题。我想将SVN制作的补丁应用到git存储库。显然,最简单的方法是使用'git apply',但这似乎不起作用。

$ git apply --ignore-space-change --ignore-whitespace < xxx_parser.patch


<stdin>:10: trailing whitespace.
        FORCE_LA_CHECK = false; stdin:23: trailing whitespace.

<stdin>:79: trailing whitespace
. 
. 
. 
. 
error: pmd/grammar/JspParser.jjt: No such file or directory 
error: patch failed: pmd/pom.xml:251 
error: pmd/pom.xml: patch does not apply

这是xxx_parser.patch的内容:

 $ head xxx_parser.patch Index: etc/grammar/JspParser.jjt
 --- etc/grammar/JspParser.jjt   (revision 7704)
 +++ etc/grammar/JspParser.jjt   (working copy)

现在为什么它抱怨它找不到文件pmd / grammar / JspParser.jjt?

补丁中的路径指向正确的目录。

2 个答案:

答案 0 :(得分:46)

我在使用git应用SVN生成的补丁方面遇到了一些问题。我建议直接使用patch命令应用任何subversion补丁,并使用git验证是否已成功应用所述补丁。

$ patch -p0 < xxx_parser.patch
$ git diff

答案 1 :(得分:6)

如果您在命令行中将patch作为可执行命令,则

@emcconville answer有效。

对于其他人:

  1. 转到svn repo

    svn diff --git&gt;&gt; gitFormat.patch

  2. 从您的(将此文件复制到)git repo

    git apply gitFormat.patch