将svn补丁应用于git存储库

vic*_*tor 37 svn git 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
Run Code Online (Sandbox Code Playgroud)

这是xxx_parser.patch的内容:

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

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

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

emc*_*lle 50

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

$ patch -p0 < xxx_parser.patch
$ git diff
Run Code Online (Sandbox Code Playgroud)

  • 如果出现行尾问题(修改了太多行),请尝试使用二进制选项:patch --binary --no-backup-if-mismatch -p0 &lt; xxx_parser.patch (2认同)

Vin*_*eti 6

如果您patch在命令行中具有可执行命令,则@emcconville应答有效.

为他人:

  1. 去svn回购

    svn diff --git >> gitFormat.patch

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

    git应用gitFormat.patch

  • 这对我有用,尽管我必须手动编辑 .patch 文件来修复文件的路径 - 在我的例子中,SVN 存储库根目录是补丁相关项目的两个目录。 (3认同)
  • 对于调整路径 `-p&lt;n&gt; 从传统差异路径中删除 &lt;n&gt; 前导斜杠`可能很有用 (2认同)