git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git apply: git diff header lacks filename information for git diff --no-index patch

From
Jeff King <peff@peff.net>
Date
Oct 4, 2008, 04:17 UTC
Message-ID
<20081004041714.GA12413@coredump.intra.peff.net>
In-Reply-To
<500f3d130810021127j570bb540p901f6a73f58a6cb1@mail.gmail.com>
On Thu, Oct 02, 2008 at 09:27:36PM +0300, Imre Deak wrote:
Show 7 quoted lines
> $ git apply patch
> fatal: git diff header lacks filename information (line 4)
> $ cat patch
> diff --git a/dev/null b/a
> new file mode 100644
> index 0000000000000000000000000000000000000000..1f2a4f5ef3df7f7456d91c961da36fc58904f2f1
> GIT binary patch

Hmm. The problem is that "git apply" doesn't accept that "a/dev/null" and "b/a" are the same, so it rejects them as a name. I guess on a text patch, we would just pull that information from the "---" and "+++" lines, so we don't care that it's not on the diff commandline.

However, a _non_ --no-index patch doesn't produce the same output. It will actually produce the line:

  diff --git a/a b/a

even if it is a creation patch. So I'm not sure which piece of code is at fault. Either:

  1. git apply is right to reject, and "git diff --no-index" should be
     putting the actual filename on the commandline of a binary patch
     instead of /dev/null, even if it is a creation patch.
     or
  2. git apply should accept this construct. Perhaps we should relax the
     "both names must be the same" rule if one of the names is /dev/null
     (and we would take the other)?

Linus, the "both names must be the same" code in git_header_name blames to you (5041aa70). Thoughts on number 2?

-Peff
Previous: Imre DeakNext: Jakub Narebski
Message 2 of 10 in “git apply: git diff header lacks filename information for git diff --no-index patch”
  1. Imre DeakOct 2, 2008
  2. Jeff KingOct 4, 2008
  3. Jakub NarebskiOct 4, 2008
  4. Jeff KingOct 5, 2008
  5. Linus TorvaldsOct 4, 2008
  6. Linus TorvaldsOct 4, 2008
  7. Linus TorvaldsOct 4, 2008
  8. Jeff KingOct 5, 2008
  9. Jeff KingOct 5, 2008
  10. Jeff KingOct 5, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.