revision arguments: ..B means HEAD..B, just like A.. means A..HEAD
[gitweb.git] / revision.c
index 745b0d2e10b0b712731b84ccb9337d7c82cba043..2cda7e0edc6c9efcfd9bd52884a87eced2b8b12d 100644 (file)
@@ -642,14 +642,19 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
                if (dotdot) {
                        unsigned char from_sha1[20];
                        char *next = dotdot + 2;
+                       char *this = arg;
+                       static const char HEAD[] = "HEAD";
                        *dotdot = 0;
                        if (!*next)
-                               next = "HEAD";
-                       if (!get_sha1(arg, from_sha1) && !get_sha1(next, sha1)) {
+                               next = HEAD;
+                       if (dotdot == arg)
+                               this = HEAD;
+                       if (!get_sha1(this, from_sha1) &&
+                           !get_sha1(next, sha1)) {
                                struct commit *exclude;
                                struct commit *include;
 
-                               exclude = get_commit_reference(revs, arg, from_sha1, flags ^ UNINTERESTING);
+                               exclude = get_commit_reference(revs, this, from_sha1, flags ^ UNINTERESTING);
                                include = get_commit_reference(revs, next, sha1, flags);
                                if (!exclude || !include)
                                        die("Invalid revision range %s..%s", arg, next);