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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html