apply svn patch to git repository

victor picture victor · Jul 17, 2012 · Viewed 20.3k times · Source

Ok, I've tried all answers i could find on stackoverflow, but apparently none seem to be able to solve my problem. I want to apply a patch made by SVN to a git repository. Apparently the easiest way to do it is by using 'git apply', but that does not seem to work.

$ 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

This is the content of xxx_parser.patch:

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

now why does it complain that it cannot find file pmd/grammar/JspParser.jjt?

The path in the patch is pointing to proper directory.

Answer

emcconville picture emcconville · Jul 25, 2012

I've had a few issues applying SVN generated patches with git. I'd recommend applying any subversion patches directly with patch command, and use git to verify that said patch was successfully applied.

$ patch -p0 < xxx_parser.patch
$ git diff