Code

rev-parse: exit with non-zero status if ref@{n} is not valid.
authorJon Seymour <jon.seymour@gmail.com>
Tue, 24 Aug 2010 04:52:42 +0000 (14:52 +1000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 24 Aug 2010 17:46:11 +0000 (10:46 -0700)
"The current behaviour of ref@{...} syntax parser is suboptimal:

    $ git rev-parse --verify jch@{99999} && echo true
    warning: Log for 'jch' only has 1368 entries.
    cfb88e9a8d4926b0011ae2dd67e1f57a98f4b768
    true

It even knows that it is running off the cut-off point; it should just
cause the caller to notice that fact.  I don't think changing it to error
out should cause any harm to existing callers."

With this change:

   $ git rev-parse --verify jch@{99999} || echo false
   fatal: Log for 'jch' only has 1368 entries.
   false

   $ git rev-parse jch@{99999} || echo false
   fatal: Log for 'jch' only has 1368 entries.
   false

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_name.c

index 4f2af8da934b125f2c09ceb4d8185dabc58f7831..90ad430a866cb4406a66250fb3a704b82b1ccfba 100644 (file)
@@ -430,10 +430,11 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
                                        "warning: Log for '%.*s' only goes "
                                        "back to %s.\n", len, str,
                                        show_date(co_time, co_tz, DATE_RFC2822));
-                       else
-                               fprintf(stderr,
-                                       "warning: Log for '%.*s' only has "
-                                       "%d entries.\n", len, str, co_cnt);
+                       else {
+                               free(real_ref);
+                               die("Log for '%.*s' only has %d entries.",
+                                   len, str, co_cnt);
+                       }
                }
        }