[BUG?] Patches created with 'diff.noprefix=true' don't 'git apply'.
- From
Nathan Collins <nathan.collins@gmail.com>
- Date
- May 1, 2014, 01:36 UTC
- Message-ID
- <CAO8RVvdgN3U5hUEsJjYY9urfeVUDWwHiEur4NQp=H93W37RRnw@mail.gmail.com>
Bug? ====
Patches created with 'diff.noprefix=true' don't 'git apply' without specifying '-p0'.
I'm not sure this is a bug -- the 'man git-apply' just says "Reads the supplied diff output (i.e. "a patch") and applies it to files" -- but I would expect patches I create locally to apply cleanly locally. In real life the 'diff.noprefix=true' is in my ~/.gitconfig, so this was pretty confusing.
Here's an old bug that's kind of related: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=607044
I'm using Git 1.9.2.
Example =======
Create a repo with a test commit:
git init bug.git cd bug.git git add test git commit test -m Test
Revert the test commit in a contrived way (like 'git revert HEAD --no-commit; git reset'). This works:
git -c diff.noprefix=false show | git -c diff.noprefix=false apply --reverse
And this works:
git reset --hard git -c diff.noprefix=true show | git -c diff.noprefix=true apply -p0 --reverse
But this fails:
git reset --hard git -c diff.noprefix=true show | git -c diff.noprefix=true apply --reverse
fatal: git diff header lacks filename information when removing 1 leading pathname component (line 12)
Use Case ========
Partially reverting a commit:
http://git.661346.n2.nabble.com/Revert-a-single-commit-in-a-single-file-td6064050.html#a6064406
Cheers,
-nathan