From: John Keeping <john@keeping.me.uk>
To: Mike Crowe <mac@mcrowe.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] describe: Add --left-only option
Date: Fri, 17 May 2013 16:03:29 +0100 [thread overview]
Message-ID: <20130517150329.GA27005@serenity.lan> (raw)
In-Reply-To: <1368800666-5222-1-git-send-email-mac@mcrowe.com>
On Fri, May 17, 2013 at 03:24:26PM +0100, Mike Crowe wrote:
> Only consider the first parent commit when walking the commit history. This
> is useful if you only wish to match tags on your branch after a merge.
For consistency with "git log" should this be called "--first-parent"?
In "git log" --left-only takes effect only when considering a symmetric
range, which "git describe" isn't. Whereas --first-parent triggers
precisely the behaviour described here.
> Signed-off-by: Mike Crowe <mac@mcrowe.com>
> ---
> Documentation/git-describe.txt | 9 ++++++++-
> builtin/describe.c | 5 +++++
> t/t6120-describe.sh | 3 +++
> 3 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt
> index 28e5ec0..67f7d8e 100644
> --- a/Documentation/git-describe.txt
> +++ b/Documentation/git-describe.txt
> @@ -88,6 +88,11 @@ OPTIONS
> --always::
> Show uniquely abbreviated commit object as fallback.
>
> +--left-only::
> + Consider only the left-most parent of any commit with multiple
> + parents. This is useful when you wish to not match tags on branches
> + merged in the history of the target commit.
> +
> EXAMPLES
> --------
>
> @@ -149,7 +154,9 @@ is found, its name will be output and searching will stop.
> If an exact match was not found, 'git describe' will walk back
> through the commit history to locate an ancestor commit which
> has been tagged. The ancestor's tag will be output along with an
> -abbreviation of the input committish's SHA-1.
> +abbreviation of the input committish's SHA-1. If '--left-only' was
> +specified then the walk will only consider the first parent of each
> +commit.
>
> If multiple tags were found during the walk then the tag which
> has the fewest commits different from the input committish will be
> diff --git a/builtin/describe.c b/builtin/describe.c
> index 6636a68..44a4ca5 100644
> --- a/builtin/describe.c
> +++ b/builtin/describe.c
> @@ -21,6 +21,7 @@ static int debug; /* Display lots of verbose info */
> static int all; /* Any valid ref can be used */
> static int tags; /* Allow lightweight tags */
> static int longformat;
> +static int left_only;
> static int abbrev = -1; /* unspecified */
> static int max_candidates = 10;
> static struct hash_table names;
> @@ -336,6 +337,9 @@ static void describe(const char *arg, int last_one)
> commit_list_insert_by_date(p, &list);
> p->object.flags |= c->object.flags;
> parents = parents->next;
> +
> + if (left_only)
> + break;
> }
> }
>
> @@ -404,6 +408,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
> OPT_BOOLEAN(0, "all", &all, N_("use any ref")),
> OPT_BOOLEAN(0, "tags", &tags, N_("use any tag, even unannotated")),
> OPT_BOOLEAN(0, "long", &longformat, N_("always use long format")),
> + OPT_BOOLEAN(0, "left-only", &left_only, N_("only follow left parent")),
> OPT__ABBREV(&abbrev),
> OPT_SET_INT(0, "exact-match", &max_candidates,
> N_("only output exact matches"), 0),
> diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh
> index f67aa6f..aea7463 100755
> --- a/t/t6120-describe.sh
> +++ b/t/t6120-describe.sh
> @@ -110,6 +110,9 @@ check_describe tags/e --all HEAD^^^
> check_describe B-0-* --long HEAD^^2^
> check_describe A-3-* --long HEAD^^2
>
> +check_describe c-7-* --tags
> +check_describe e-3-* --left-only --tags
> +
> : >err.expect
> check_describe A --all A^0
> test_expect_success 'no warning was displayed for A' '
> --
> 1.8.3.rc2.14.g3089c4d
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-05-17 15:03 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-17 14:24 [PATCH] describe: Add --left-only option Mike Crowe
2013-05-17 15:03 ` John Keeping [this message]
2013-05-17 15:16 ` Mike Crowe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130517150329.GA27005@serenity.lan \
--to=john@keeping.me.uk \
--cc=git@vger.kernel.org \
--cc=mac@mcrowe.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).