Merge branch 'sg/describe-contains'
authorJunio C Hamano <gitster@pobox.com>
Mon, 31 Aug 2015 22:39:10 +0000 (15:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 31 Aug 2015 22:39:10 +0000 (15:39 -0700)
"git describe" without argument defaulted to describe the HEAD
commit, but "git describe --contains" didn't.  Arguably, in a
repository used for active development, such defaulting would not
be very useful as the tip of branch is typically not tagged, but it
is better to be consistent.

* sg/describe-contains:
  describe --contains: default to HEAD when no commit-ish is given

Documentation/git-describe.txt
builtin/describe.c
t/t6120-describe.sh

index e045fc7..c8f28c8 100644 (file)
@@ -9,7 +9,7 @@ git-describe - Describe a commit using the most recent tag reachable from it
 SYNOPSIS
 --------
 [verse]
-'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <commit-ish>...
+'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]
 'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]
 
 DESCRIPTION
@@ -27,7 +27,7 @@ see the -a and -s options to linkgit:git-tag[1].
 OPTIONS
 -------
 <commit-ish>...::
-       Commit-ish object names to describe.
+       Commit-ish object names to describe.  Defaults to HEAD if omitted.
 
 --dirty[=<mark>]::
        Describe the working tree.
index a36c829..7df5543 100644 (file)
@@ -443,10 +443,10 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
                        if (pattern)
                                argv_array_pushf(&args, "--refs=refs/tags/%s", pattern);
                }
-               while (*argv) {
-                       argv_array_push(&args, *argv);
-                       argv++;
-               }
+               if (argc)
+                       argv_array_pushv(&args, argv);
+               else
+                       argv_array_push(&args, "HEAD");
                return cmd_name_rev(args.argc, args.argv, prefix);
        }
 
index c0e5b2a..85f2694 100755 (executable)
@@ -113,6 +113,14 @@ check_describe A-3-* --long HEAD^^2
 check_describe c-7-* --tags
 check_describe e-3-* --first-parent --tags
 
+test_expect_success 'describe --contains defaults to HEAD without commit-ish' '
+       echo "A^0" >expect &&
+       git checkout A &&
+       test_when_finished "git checkout -" &&
+       git describe --contains >actual &&
+       test_cmp expect actual
+'
+
 : >err.expect
 check_describe A --all A^0
 test_expect_success 'no warning was displayed for A' '