web-dev-qa-db-ja.com

SVNパッチをGitリポジトリに適用する

わかりました、私は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を見つけることができないと文句を言うのですか?

パッチのパスは適切なディレクトリを指しています。

38
victor

SVNが生成したパッチをgitに適用する際にいくつかの問題がありました。 patchコマンドを使用してSubversionパッチを直接適用することをお勧めします。gitを使用して、そのパッチが正常に適用されたことを確認してください。

$ patch -p0 < xxx_parser.patch
$ git diff
51
emcconville

コマンドラインでpatchを実行可能コマンドとして使用すると、@ emcconvilleの回答が機能します。

ほかの人のため:

  1. SVNリポジトリに移動

    svn diff --git >> gitFormat.patch

  2. (このファイルをコピーする)gitリポジトリから

    git apply gitFormat.patch

6