prevent HEAD reflog to be interpreted as current branch reflog
authorNicolas Pitre <nico@cam.org>
Thu, 1 Feb 2007 17:33:23 +0000 (12:33 -0500)
committerJunio C Hamano <junkio@cox.net>
Fri, 2 Feb 2007 05:48:26 +0000 (21:48 -0800)
The work in progress to enable separate reflog for HEAD will make it
independent from reflog of any branch HEAD might be pointing to. In
the mean time disallow HEAD@{...} until that work is completed. Otherwise
people might get used to the current behavior which makes HEAD@{...} an
alias for <current_branch>@{...} which won't be the case later.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
sha1_name.c

index 9dfb3ac..70c6e42 100644 (file)
@@ -301,12 +301,26 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
                fprintf(stderr, warning, len, str);
 
        if (reflog_len) {
-               /* Is it asking for N-th entry, or approxidate? */
                int nth, i;
                unsigned long at_time;
                unsigned long co_time;
                int co_tz, co_cnt;
 
+               /*
+                * We'll have an independent reflog for "HEAD" eventually
+                * which won't be a synonym for the current branch reflog.
+                * In the mean time prevent people from getting used to
+                * such a synonym until the work is completed.
+                */
+               if (!strncmp("HEAD", str, len) &&
+                   !strncmp(real_ref, "refs/", 5)) {
+                       error("reflog for HEAD has not been implemented yet\n"
+                             "Maybe you could try %s%s instead.",
+                             strchr(real_ref+5, '/')+1, str + len);
+                       exit(-1);
+               }
+
+               /* Is it asking for N-th entry, or approxidate? */
                for (i = nth = 0; 0 <= nth && i < reflog_len; i++) {
                        char ch = str[at+2+i];
                        if ('0' <= ch && ch <= '9')