Merge branch 'sp/maint-describe-all-tag-warning' into maint
authorJunio C Hamano <gitster@pobox.com>
Sat, 27 Dec 2008 22:21:15 +0000 (14:21 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 27 Dec 2008 22:21:15 +0000 (14:21 -0800)
* sp/maint-describe-all-tag-warning:
describe: Avoid unnecessary warning when using --all

1  2 
builtin-describe.c
t/t6120-describe.sh
diff --combined builtin-describe.c
index d2cfb1b0837ffd1ab3b1f69e8dee0ffa36f2e1ab,22b989fd74098d355efc78a9fbc2a60461adc6b9..3a007ed1cafcab82f466d355b63e416b06eb8864
  #define MAX_TAGS      (FLAG_BITS - 1)
  
  static const char * const describe_usage[] = {
 -      "git-describe [options] <committish>*",
 +      "git describe [options] <committish>*",
        NULL
  };
  
  static int debug;     /* Display lots of verbose info */
 -static int all;       /* Default to annotated tags only */
 -static int tags;      /* But allow any tags if --tags is specified */
 +static int all;       /* Any valid ref can be used */
 +static int tags;      /* Allow lightweight tags */
  static int longformat;
  static int abbrev = DEFAULT_ABBREV;
  static int max_candidates = 10;
 -const char *pattern = NULL;
 +static const char *pattern;
  static int always;
  
  struct commit_name {
@@@ -112,6 -112,8 +112,6 @@@ static int compare_pt(const void *a_, c
  {
        struct possible_tag *a = (struct possible_tag *)a_;
        struct possible_tag *b = (struct possible_tag *)b_;
 -      if (a->name->prio != b->name->prio)
 -              return b->name->prio - a->name->prio;
        if (a->depth != b->depth)
                return a->depth - b->depth;
        if (a->found_order != b->found_order)
@@@ -158,7 -160,7 +158,7 @@@ static void display_name(struct commit_
                n->tag = lookup_tag(n->sha1);
                if (!n->tag || parse_tag(n->tag) || !n->tag->tag)
                        die("annotated tag %s not available", n->path);
-               if (strcmp(n->tag->tag, n->path))
+               if (strcmp(n->tag->tag, all ? n->path + 5 : n->path))
                        warning("tag '%s' is really '%s' here", n->tag->tag, n->path);
        }
  
@@@ -202,7 -204,7 +202,7 @@@ static void describe(const char *arg, i
                 */
                display_name(n);
                if (longformat)
 -                      show_suffix(0, n->tag->tagged->sha1);
 +                      show_suffix(0, n->tag ? n->tag->tagged->sha1 : sha1);
                printf("\n");
                return;
        }
diff --combined t/t6120-describe.sh
index e6c9e59b617f4eaaa1148ed29b4ca92116bdf0c2,113a085cb9c0df458cb49b872070da088ca8dd0b..8c7e081c53eec31d38844d8efb9b942893107b09
@@@ -31,57 -31,57 +31,57 @@@ check_describe () 
  test_expect_success setup '
  
        test_tick &&
 -      echo one >file && git add file && git-commit -m initial &&
 +      echo one >file && git add file && git commit -m initial &&
        one=$(git rev-parse HEAD) &&
  
        test_tick &&
 -      echo two >file && git add file && git-commit -m second &&
 +      echo two >file && git add file && git commit -m second &&
        two=$(git rev-parse HEAD) &&
  
        test_tick &&
 -      echo three >file && git add file && git-commit -m third &&
 +      echo three >file && git add file && git commit -m third &&
  
        test_tick &&
 -      echo A >file && git add file && git-commit -m A &&
 +      echo A >file && git add file && git commit -m A &&
        test_tick &&
 -      git-tag -a -m A A &&
 +      git tag -a -m A A &&
  
        test_tick &&
 -      echo c >file && git add file && git-commit -m c &&
 +      echo c >file && git add file && git commit -m c &&
        test_tick &&
 -      git-tag c &&
 +      git tag c &&
  
        git reset --hard $two &&
        test_tick &&
 -      echo B >side && git add side && git-commit -m B &&
 +      echo B >side && git add side && git commit -m B &&
        test_tick &&
 -      git-tag -a -m B B &&
 +      git tag -a -m B B &&
  
        test_tick &&
 -      git-merge -m Merged c &&
 +      git merge -m Merged c &&
        merged=$(git rev-parse HEAD) &&
  
        git reset --hard $two &&
        test_tick &&
 -      echo D >another && git add another && git-commit -m D &&
 +      echo D >another && git add another && git commit -m D &&
        test_tick &&
 -      git-tag -a -m D D &&
 +      git tag -a -m D D &&
  
        test_tick &&
        echo DD >another && git commit -a -m another &&
  
        test_tick &&
 -      git-tag e &&
 +      git tag e &&
  
        test_tick &&
        echo DDD >another && git commit -a -m "yet another" &&
  
        test_tick &&
 -      git-merge -m Merged $merged &&
 +      git merge -m Merged $merged &&
  
        test_tick &&
        echo X >file && echo X >side && git add file side &&
 -      git-commit -m x
 +      git commit -m x
  
  '
  
@@@ -91,15 -91,21 +91,21 @@@ check_describe D-* HEAD^
  check_describe A-* HEAD^^2
  check_describe B HEAD^^2^
  
 -check_describe A-* --tags HEAD
 -check_describe A-* --tags HEAD^
 -check_describe D-* --tags HEAD^^
 -check_describe A-* --tags HEAD^^2
 +check_describe c-* --tags HEAD
 +check_describe c-* --tags HEAD^
 +check_describe e-* --tags HEAD^^
 +check_describe c-* --tags HEAD^^2
  check_describe B --tags HEAD^^2^
  
  check_describe B-0-* --long HEAD^^2^
  check_describe A-3-* --long HEAD^^2
  
+ : >err.expect
+ check_describe A --all A^0
+ test_expect_success 'no warning was displayed for A' '
+       test_cmp err.expect err.actual
+ '
  test_expect_success 'rename tag A to Q locally' '
        mv .git/refs/tags/A .git/refs/tags/Q
  '
@@@ -108,7 -114,7 +114,7 @@@ warning: tag 'A' is really 'Q' her
  EOF
  check_describe A-* HEAD
  test_expect_success 'warning was displayed for Q' '
 -      git diff err.expect err.actual
 +      test_cmp err.expect err.actual
  '
  test_expect_success 'rename tag Q back to A' '
        mv .git/refs/tags/Q .git/refs/tags/A
@@@ -139,6 -145,4 +145,6 @@@ check_describe "test1-lightweight-*" --
  
  check_describe "test2-lightweight-*" --tags --match="test2-*"
  
 +check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^
 +
  test_done