Junio C Hamano [off-list ref] writes:
Jeff King [off-list ref] writes:
quoted
lookup does not. It hits an assert() that can only be triggered in the
face of duplicate objects. For example:
$ git cat-file -t 4ea4acbcb0930ac42acc87a0d203864dec1a9697
commit
$ GIT_USE_LOOKUP=1 git cat-file -t 4ea4acbcb0930ac42acc87a0d203864dec1a9697
git: sha1-lookup.c:222: sha1_entry_pos: Assertion `lov < hiv' failed.
Aborted
Older versions of JGit used to put duplicate objects in a pack, and
IIRC Shawn declared that a bug in the packer and fixed it, so from
that point of view, I think rejecting is probably the right thing,
even though I think warning and continuing is also acceptable and
indeed may be better.
Also repacking may have a funny corner case. I do not recall the
details as the above was a long time ago, but when I was tracking it
down, a delta was made against one copy of the base object, and
referred to it using delta-offset, while there was another copy of
the base object which was found by the bisection search, and from
there on, the inconsistencies between these two (they represent the
same payload, but they are at different offsets in the same pack and
with different in-pack sizes) led to some funky behaviour.