Code

git-show: Reject native ref
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Feb 2007 00:22:52 +0000 (16:22 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 28 Feb 2007 01:09:55 +0000 (17:09 -0800)
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).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
revision.c

index 15bdaf6095ccbe690c664f80a5b25e354d068d61..76499dcf38bb9c92bd52d251549725bceb6a9ba1 100644 (file)
@@ -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,