44

好的,我已经尝试了所有可以在 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?

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

4

2 回答 2

53

我在使用 git 应用 SVN 生成的补丁时遇到了一些问题。我建议直接使用patch命令应用任何颠覆补丁,并使用 git 来验证该补丁是否已成功应用。

$ patch -p0 < xxx_parser.patch
$ git diff
于 2012-07-25T14:51:03.970 回答
9

patch如果您在命令行中有一个可执行命令,@emcconville 答案就有效。

为他人:

  1. 转到 svn 存储库

    svn diff --git >> gitFormat.patch

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

    git apply gitFormat.patch

于 2015-01-07T10:25:28.990 回答