From: Junio C Hamano <gitster@pobox.com>
To: Alex Henrie <alexhenrie24@gmail.com>
Cc: git@vger.kernel.org, paulus@ozlabs.org
Subject: Re: [PATCH v3 2/4] log: add a --no-graph option
Date: Fri, 11 Feb 2022 11:02:11 -0800 [thread overview]
Message-ID: <xmqqa6exb51o.fsf@gitster.g> (raw)
In-Reply-To: <20220211163627.598166-2-alexhenrie24@gmail.com> (Alex Henrie's message of "Fri, 11 Feb 2022 09:36:25 -0700")
Alex Henrie <alexhenrie24@gmail.com> writes:
> It's useful to be able to countermand a previous --graph option, for
> example if `git log --graph` is run via an alias.
>
> Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
> ---
> v3: don't pass a regular expression with parentheses to grep, so that
> the tests pass in all configurations on GitHub
> ---
> builtin/blame.c | 1 +
> builtin/shortlog.c | 1 +
> revision.c | 19 ++++++++++---
> revision.h | 1 +
> t/t4202-log.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++++
> 5 files changed, 87 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/blame.c b/builtin/blame.c
> index 7fafeac408..ef831de5ac 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -934,6 +934,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
> parse_revision_opt(&revs, &ctx, options, blame_opt_usage);
> }
> parse_done:
> + revision_opts_finish(&revs);
This ...
> diff --git a/builtin/shortlog.c b/builtin/shortlog.c
> index e7f7af5de3..228d782754 100644
> --- a/builtin/shortlog.c
> +++ b/builtin/shortlog.c
> @@ -388,6 +388,7 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
> parse_revision_opt(&rev, &ctx, options, shortlog_usage);
> }
> parse_done:
> + revision_opts_finish(&rev);
> argc = parse_options_end(&ctx);
>
> if (nongit && argc > 1) {
... and this. It is a bit scary that we have to make sure all the
users of parse_revision_opt() users need to call this new helper.
Didn't we recently gain new documentation to help novices write
their first revision-traversal-API-using program? Does it need to
be updated for this change (I didn't check)?
> diff --git a/revision.c b/revision.c
> index 816061f3d9..a39fd1c278 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -2424,10 +2424,11 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
> revs->pretty_given = 1;
> revs->abbrev_commit = 1;
> } else if (!strcmp(arg, "--graph")) {
> - revs->topo_order = 1;
> - revs->rewrite_parents = 1;
> graph_clear(revs->graph);
> revs->graph = graph_init(revs);
> + } else if (!strcmp(arg, "--no-graph")) {
> + graph_clear(revs->graph);
> + revs->graph = NULL;
> } else if (!strcmp(arg, "--encode-email-headers")) {
> revs->encode_email_headers = 1;
> } else if (!strcmp(arg, "--no-encode-email-headers")) {
> @@ -2524,8 +2525,6 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
> unkv[(*unkc)++] = arg;
> return opts;
> }
> - if (revs->graph && revs->track_linear)
> - die(_("options '%s' and '%s' cannot be used together"), "--show-linear-break", "--graph");
>
> return 1;
> }
As a later "--no" can clear an earlier "--graph", we cannot
incrementally check if options are compatible, until the end, at
which time we can be sure that "--graph" is being asked.
> +void revision_opts_finish(struct rev_info *revs)
> +{
> + if (revs->graph && revs->track_linear)
> + die(_("options '%s' and '%s' cannot be used together"), "--show-linear-break", "--graph");
Inherited from the original, but we may want to wrap this line.
> + if (revs->graph) {
> + revs->topo_order = 1;
> + revs->rewrite_parents = 1;
> + }
> +}
> +
OK.
> @@ -2786,6 +2796,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
> break;
> }
> }
> + revision_opts_finish(revs);
OK.
Will queue. Thanks.
next prev parent reply other threads:[~2022-02-11 19:02 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-11 16:36 [PATCH v3 1/4] log: fix memory leak if --graph is passed multiple times Alex Henrie
2022-02-11 16:36 ` [PATCH v3 2/4] log: add a --no-graph option Alex Henrie
2022-02-11 19:02 ` Junio C Hamano [this message]
2022-02-11 19:20 ` Alex Henrie
2022-02-11 16:36 ` [PATCH v3 3/4] log: add a log.graph config option Alex Henrie
2022-02-11 16:36 ` [PATCH v3 4/4] gitk: pass --no-graph to `git log` Alex Henrie
2022-02-11 18:12 ` Junio C Hamano
2022-02-11 19:05 ` Alex Henrie
2022-02-11 19:20 ` Junio C Hamano
2022-02-11 20:00 ` Junio C Hamano
2022-02-11 20:11 ` Alex Henrie
2022-02-11 20:08 ` Alex Henrie
2022-02-11 18:51 ` [PATCH v3 1/4] log: fix memory leak if --graph is passed multiple times Junio C Hamano
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=xmqqa6exb51o.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=alexhenrie24@gmail.com \
--cc=git@vger.kernel.org \
--cc=paulus@ozlabs.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.