Browse Source

reject @{-1} not at beginning of object name

Something like foo@{-1} is nonsensical, as the @{-N} syntax
is reserved for "the Nth last branch", and is not an actual
reflog selector. We should not feed such nonsense to
approxidate at all.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jeff King 15 years ago committed by Junio C Hamano
parent
commit
12a258c078
  1. 4
      sha1_name.c
  2. 2
      t/t1508-at-combinations.sh

4
sha1_name.c

@ -399,6 +399,10 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) @@ -399,6 +399,10 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
unsigned long co_time;
int co_tz, co_cnt;

/* a @{-N} placed anywhere except the start is an error */
if (str[at+2] == '-')
return -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];

2
t/t1508-at-combinations.sh

@ -45,7 +45,7 @@ check "@{u}" upstream-two @@ -45,7 +45,7 @@ check "@{u}" upstream-two
check "@{u}@{1}" upstream-one
check "@{-1}@{u}" master-two
check "@{-1}@{u}@{1}" master-one
fail nonsense "@{u}@{-1}"
nonsense "@{u}@{-1}"
nonsense "@{1}@{u}"

test_done

Loading…
Cancel
Save