On Wed, Jan 28, 2009 at 12:05:33AM -0800, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > > But in other cases, it silently gives you the wrong answer. For > > example, consider a history like: > > > > C--D > > / > > A--B > > \ > > E--F > > > > now let's suppose I have everything except 'E'. If I ask for > > > > git rev-list F..D > > > > then it will not realize that A and B are uninteresting, and I will get > > A-B-C-D. I think it is much better for git to complain loudly that it > > could not compute the correct answer. > > Fair enough. I think we can resurrect the conditional and the traversal > option revs->ignore_missing_negative only for this hunk in my [2/2] patch > to support that use case. > [ hunk handling parent lookup] Don't the other changes have similar parallel use cases? [2/2] also deals with tag lookup. Wouldn't you also expect, if you had a tag "T" pointing to "E" in the above scenario that "git rev-list T..D" would barf? I really think you don't want to ignore missing negations _ever_ unless the caller knows that such a miss is really only about optimization and not correctness. Side note: As you described, we expect to reach this situation from a partial transfer. Which means that you don't actually have a _ref_ for "T" (or "F"). So it is unlikely to come up in normal use (you would have to manually specify the sha1 of a broken portion of the graph). But what is more important is that your repository _is_ corrupted, I think we are losing an important method by which the user finds out. Git is usually very good at informing you of a problem in the repo early, and I think unconditionally ignoring missing objects would lose that. -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