On Sat, Dec 29, 2012 at 02:34:30AM -0800, Jonathan Nieder wrote: > >> $ git am --abort > >> Unstaged changes after reset: > >> M sound/usb/midi.c > > > > What does your index look like afterwards? Does it have a null sha1 in > > it (check "ls-files -s")? > > $ git diff-index --abbrev HEAD > :100644 100644 eeefbce3873c... 000000000000... M sound/usb/midi.c > $ git ls-files --abbrev -s sound/usb/midi.c > 100644 eeefbce3873c 0 sound/usb/midi.c Hmm. It looks like "am --abort" overwrites the index again after the read-tree which complains. If I downgrade the error in write_index to a warning, like this: diff --git a/read-cache.c b/read-cache.c index fda78bc..70a6d86 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1797,7 +1797,7 @@ int write_index(struct index_state *istate, int newfd) if (!ce_uptodate(ce) && is_racy_timestamp(istate, ce)) ce_smudge_racily_clean_entry(ce); if (is_null_sha1(ce->sha1)) - return error("cache entry has null sha1: %s", ce->name); + warning("cache entry has null sha1: %s", ce->name); if (ce_write_entry(&c, newfd, ce, previous_name) < 0) return -1; } and then just run this: [clear state from last run] $ rm -rf .git/rebase-apply $ git reset --hard [apply the patch; we get a conflict] $ git am -3sc queue-3.2/alsa-usb-audio-fix-missing-autopm-for-midi-input.patch [now run just the read-tree from "am --abort"] $ git.compile read-tree --reset -u HEAD ORIG_HEAD warning: cache entry has null sha1: sound/usb/midi.c [and now check our index] $ git ls-files -s sound/usb/midi.c 100644 0000000000000000000000000000000000000000 0 sound/usb/midi.c [yes, this index is bogus] $ git write-tree error: invalid object 100644 0000000000000000000000000000000000000000 for 'sound/usb/midi.c' fatal: git-write-tree: error building trees So I think this check may actually be finding a real bug. I have seen these null sha1s in the wild, but I was never able to track down the actual cause. Maybe this will give us a clue. Now we just need to work backwards and figure out who is putting it in the in-memory index and why. I'll try to work on it tomorrow, but please don't let that stop you if you want to keep digging in the meantime. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html