From: Jon Seymour <jon.seymour@gmail.com>
Date: Tue, 24 Aug 2010 04:52:42 +0000 (+1000)
Subject: rev-parse: exit with non-zero status if ref@{n} is not valid.
X-Git-Tag: v1.7.3-rc0~4^2~3
X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=e6eedc3;p=git.git

rev-parse: exit with non-zero status if ref@{n} is not valid.

"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>
---

diff --git a/sha1_name.c b/sha1_name.c
index 4f2af8da9..90ad430a8 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -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);
+			}
 		}
 	}