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

Re: "git apply --check" successes but git am says "does not match index"

From
Jeff King <peff@peff.net>
Date
Aug 15, 2011, 23:23 UTC
Message-ID
<20110815232318.GA4699@sigill.intra.peff.net>
In-Reply-To
<loom.20110814T113311-277@post.gmane.org>
On Sun, Aug 14, 2011 at 09:36:30AM +0000, Zemacsh wrote:
Show 6 quoted lines
> Before applying a mbox patch, "git apply --check" reports OK. Then, I run 'git 
> am', however, it complains "does not match index". Actually, both working tree 
> and index are clean. what might be the problem?
> 
> If I run "git am --abort" now, and re-turn "git am". To my surprise, everything 
> goes well.

Hmm. I don't think this has anything to do with the "apply --check". But rather the problem is that "git am" doesn't ever refresh the index. For example:

  git init repo &&
  cd repo &&
  echo one >file && git add . && git commit -m one &&
  echo two >file && git add . && git commit -m two &&
  git format-patch -1 --stdout >patch &&
  git reset --hard HEAD^ &&
  sleep 1 &&
  touch file &&
  git am patch
This fails with:
  Applying: two
  error: file: does not match index
  Patch failed at 0001 two

Running "git am --abort" resets the index, which freshens it, and then a further "git am" works:

  $ git am --abort
  $ git am patch
  Applying: two

We should perhaps call "update-index --refresh" at the start to avoid these sorts of false positives. Probably it should happen whenever we "git am --continue", as well. But for efficiency reasons, not between each patch.

I dunno. Do people want to call "git am" in a tight loop, where the index refresh would be a problem? I would think they should instead feed a whole mbox in one go.

-Peff
Previous: ZemacshNext: Junio C Hamano
Message 2 of 7 in “"git apply --check" successes but git am says "does not match index"”
  1. ZemacshAug 14, 2011
  2. Jeff KingAug 15, 2011
  3. Junio C HamanoAug 15, 2011
  4. Jeff KingAug 16, 2011
  5. Junio C HamanoAug 16, 2011
  6. Jeff KingAug 16, 2011
  7. Junio C HamanoAug 16, 2011

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.