On Tue, 27 Feb 2007, Junio C Hamano wrote: > merlyn@xxxxxxxxxxxxxx (Randal L. Schwartz) writes: > > >>>>>> "Theodore" == Theodore Tso <tytso@xxxxxxx> writes: > > > > Theodore> And I'm still not sure why > > > > Theodore> git show v1.5.0..v1.5.0.1 > > > > Theodore> doesn't throw an error, and why it prints what it does... > > > > Wait, that doesn't throw an error? > > > > (tries it) > > > > OK, how is that different from git-diff ? > > I do not think there is any difference. "show" is about > multiple points, not ranges. "diff" is about multiple > (typically two) points, and not ranges. Well, I do think Ted has a good point. Having negative refs makes no sense for the "no-walk" case (aka "git show"). So when we do git show v1.4.4..v1.5.0 that's an illogical thing to do, since "git show" is defined to be a non-revision-walking action, which means the range operator be pointless and wrong. The fact that we happily accept it (and then _only_ show v1.5.0, which is the positive end of the range) is quite arguably not very logical. We should complain, and say that you can only do "no_walk" with positive refs. Negative object refs really don't make any sense unless you walk the obejct list (or you're "git diff" and know about ranges explicitly). Something like this (although I don't know if my message is necessarily the best possible one). Linus --- diff --git a/revision.c b/revision.c index 4cf697e..b84c066 100644 --- a/revision.c +++ b/revision.c @@ -116,6 +116,8 @@ void mark_parents_uninteresting(struct commit *commit) void add_pending_object(struct rev_info *revs, struct object *obj, const char *name) { + if (revs->no_walk && (obj->flags & UNINTERESTING)) + die("object ranges do not make sense when not walking revisions"); add_object_array(obj, name, &revs->pending); if (revs->reflog_info && obj->type == OBJ_COMMIT) add_reflog_for_walk(revs->reflog_info, - 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