Re: How to prepare patch for git am which remove a file ?
On Tue, Nov 20, 2018 at 1:55 PM SZEDER Gábor wrote: > > On Tue, Nov 20, 2018 at 01:39:40PM +0100, Mathieu Malaterre wrote: > > Here is a simple setup: > > > > cd /tmp > > mkdir g > > cd g > > git init . > > wget > > http://central.maven.org/maven2/org/apache/xmlgraphics/fop/2.1/fop-2.1.pom > > git add fop-2.1.pom > > git commit -m "My First Commit" > > git rm fop-2.1.pom > > git commit -m "Second Commit" > > git format-patch HEAD~ > > git reset --hard HEAD~ > > git am 0001-Second-Commit.patch > > Applying: Second Commit > > error: patch failed: fop-2.1.pom:1 > > error: fop-2.1.pom: patch does not apply > > Patch failed at 0001 Second Commit > > hint: Use 'git am --show-current-patch' to see the failed patch > > When you have resolved this problem, run "git am --continue". > > If you prefer to skip this patch, run "git am --skip" instead. > > To restore the original branch and stop patching, run "git am --abort". > > > > What is the black magic to get `git am` to understand this patch ? > > The file in question uses CRLF line endings. Ah right, I wasn't paying attention. Thanks. > $ git am --keep-cr 0001-Second-Commit.patch > Applying: Second Commit > > For explanation I quote ad2c928001 (git-am: Add command line parameter > `--keep-cr` passing it to git-mailsplit, 2010-02-27): > > c2ca1d7 (Allow mailsplit (and hence git-am) to handle mails with CRLF > line-endings, 2009-08-04) fixed "git mailsplit" to help people with > MUA whose output from save-as command uses CRLF as line terminators by > stripping CR at the end of lines. > > However, when you know you are feeding output from "git format-patch" > directly to "git am", and especially when your contents have CR at the > end of line, such stripping is undesirable. To help such a use case, > teach --keep-cr option to "git am" and pass that to "git mailinfo". >
Re: How to prepare patch for git am which remove a file ?
On Tue, Nov 20, 2018 at 01:39:40PM +0100, Mathieu Malaterre wrote: > Here is a simple setup: > > cd /tmp > mkdir g > cd g > git init . > wget > http://central.maven.org/maven2/org/apache/xmlgraphics/fop/2.1/fop-2.1.pom > git add fop-2.1.pom > git commit -m "My First Commit" > git rm fop-2.1.pom > git commit -m "Second Commit" > git format-patch HEAD~ > git reset --hard HEAD~ > git am 0001-Second-Commit.patch > Applying: Second Commit > error: patch failed: fop-2.1.pom:1 > error: fop-2.1.pom: patch does not apply > Patch failed at 0001 Second Commit > hint: Use 'git am --show-current-patch' to see the failed patch > When you have resolved this problem, run "git am --continue". > If you prefer to skip this patch, run "git am --skip" instead. > To restore the original branch and stop patching, run "git am --abort". > > What is the black magic to get `git am` to understand this patch ? The file in question uses CRLF line endings. $ git am --keep-cr 0001-Second-Commit.patch Applying: Second Commit For explanation I quote ad2c928001 (git-am: Add command line parameter `--keep-cr` passing it to git-mailsplit, 2010-02-27): c2ca1d7 (Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings, 2009-08-04) fixed "git mailsplit" to help people with MUA whose output from save-as command uses CRLF as line terminators by stripping CR at the end of lines. However, when you know you are feeding output from "git format-patch" directly to "git am", and especially when your contents have CR at the end of line, such stripping is undesirable. To help such a use case, teach --keep-cr option to "git am" and pass that to "git mailinfo".
How to prepare patch for git am which remove a file ?
Here is a simple setup: cd /tmp mkdir g cd g git init . wget http://central.maven.org/maven2/org/apache/xmlgraphics/fop/2.1/fop-2.1.pom git add fop-2.1.pom git commit -m "My First Commit" git rm fop-2.1.pom git commit -m "Second Commit" git format-patch HEAD~ git reset --hard HEAD~ git am 0001-Second-Commit.patch Applying: Second Commit error: patch failed: fop-2.1.pom:1 error: fop-2.1.pom: patch does not apply Patch failed at 0001 Second Commit hint: Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". What is the black magic to get `git am` to understand this patch ? Please note that: $ patch --dry-run -p1 < 0001-Second-Commit.patch checking file fop-2.1.pom Thanks!