From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Pablo Sabater <pabloosabaterr@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
karthik.188@gmail.com, jltobler@gmail.com,
ayu.chandekar@gmail.com, siddharthasthana31@gmail.com,
chandrapratap3519@gmail.com, gitster@pobox.com, j6t@kdbg.org
Subject: Re: [GSoC PATCH v4 1/3] graph: add --graph-lane-limit option
Date: Wed, 25 Mar 2026 08:02:38 +0100 [thread overview]
Message-ID: <acOIjm2KHXvopSQ/@szeder.dev> (raw)
In-Reply-To: <20260323215935.74486-2-pabloosabaterr@gmail.com>
On Mon, Mar 23, 2026 at 10:59:33PM +0100, Pablo Sabater wrote:
> Repositories that have many active branches at the same time produce
> wide graphs. A lane consists of two columns, the edge and the space
> padding, each branch takes a lane in the graph and there is no way
> to limit how many can be shown.
>
> Add '--graph-lane-limit=<n>' revision option that caps the number
> of visible lanes to n. This option requires '--graph', without it
> a limit to the graph has no meaning, in this case error out.
>
> Zero and negative values are valid inputs but silently ignored
> treating them as "no limit", the same as not using the option.
> This follows what '--max-parents' does with negative values.
>
> Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com>
> ---
> graph.c | 9 +++++++++
> revision.c | 6 ++++++
> revision.h | 1 +
> 3 files changed, 16 insertions(+)
>
> diff --git a/graph.c b/graph.c
> index 26f6fbf000..e7c1151ac0 100644
> --- a/graph.c
> +++ b/graph.c
> @@ -317,6 +317,15 @@ struct git_graph {
> struct strbuf prefix_buf;
> };
>
> +static int graph_needs_truncation(struct git_graph *graph, int lane)
> +{
> + int max = graph->revs->graph_max_lanes;
> + /*
> + * Ignore values <= 0, meaning no limit.
> + */
> + return max > 0 && lane >= max;
> +}
This patch adds this static function, but it doesn't add any callers.
This breaks the build with DEVELOPER=1:
$ make DEVELOPER=1 graph.o
CC graph.o
graph.c:320:12: error: ‘graph_needs_truncation’ defined but not used [-Werror=unused-function]
320 | static int graph_needs_truncation(struct git_graph *graph, int lane)
| ^~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [Makefile:2923: graph.o] Error 1
> static const char *diff_output_prefix_callback(struct diff_options *opt, void *data)
> {
> struct git_graph *graph = data;
> diff --git a/revision.c b/revision.c
> index 31808e3df0..952edb031e 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -2605,6 +2605,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
> } else if (!strcmp(arg, "--no-graph")) {
> graph_clear(revs->graph);
> revs->graph = NULL;
> + } else if (skip_prefix(arg, "--graph-lane-limit=", &optarg)) {
> + revs->graph_max_lanes = parse_count(optarg);
> } else if (!strcmp(arg, "--encode-email-headers")) {
> revs->encode_email_headers = 1;
> } else if (!strcmp(arg, "--no-encode-email-headers")) {
> @@ -3172,6 +3174,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
>
> if (revs->no_walk && revs->graph)
> die(_("options '%s' and '%s' cannot be used together"), "--no-walk", "--graph");
> +
> + if (revs->graph_max_lanes > 0 && !revs->graph)
> + die(_("option '%s' requires '%s'"), "--graph-lane-limit", "--graph");
> +
> if (!revs->reflog_info && revs->grep_filter.use_reflog_filter)
> die(_("the option '%s' requires '%s'"), "--grep-reflog", "--walk-reflogs");
>
> diff --git a/revision.h b/revision.h
> index 69242ecb18..874ccce625 100644
> --- a/revision.h
> +++ b/revision.h
> @@ -304,6 +304,7 @@ struct rev_info {
>
> /* Display history graph */
> struct git_graph *graph;
> + int graph_max_lanes;
>
> /* special limits */
> int skip_count;
> --
> 2.43.0
>
next prev parent reply other threads:[~2026-03-25 7:02 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-16 13:34 [GSoC RFC PATCH] graph: add --graph-max option to limit displayed columns Pablo Sabater
2026-03-16 17:04 ` Karthik Nayak
2026-03-16 19:48 ` Pablo
2026-03-17 22:09 ` [GSoC RFC PATCH v2] graph: add --max-columns " Pablo Sabater
2026-03-18 16:05 ` Junio C Hamano
2026-03-18 18:20 ` Pablo
2026-03-19 7:07 ` Johannes Sixt
2026-03-22 19:54 ` [GSoC PATCH WIP RFC v3 0/3] graph: add --graph-lane-limit option Pablo Sabater
2026-03-22 20:37 ` [GSoC PATCH WIP RFC v3 1/3] " Pablo Sabater
2026-03-22 20:38 ` [GSoC PATCH WIP RFC v3 2/3] graph: truncate graph visual output Pablo Sabater
2026-03-22 20:38 ` [GSoC PATCH WIP RFC v3 3/3] graph: add documentation and testing about --graph-lane-limit Pablo Sabater
2026-03-22 22:09 ` [GSoC PATCH WIP RFC v3 1/3] graph: add --graph-lane-limit option Junio C Hamano
2026-03-23 2:33 ` Pablo
2026-03-23 21:59 ` [GSoC PATCH v4 0/3] " Pablo Sabater
2026-03-23 21:59 ` [GSoC PATCH v4 1/3] " Pablo Sabater
2026-03-25 7:02 ` SZEDER Gábor [this message]
2026-03-25 10:03 ` Johannes Sixt
2026-03-25 12:29 ` Pablo
2026-03-23 21:59 ` [GSoC PATCH v4 2/3] graph: truncate graph visual output Pablo Sabater
2026-03-25 10:04 ` Johannes Sixt
2026-03-25 11:19 ` Pablo
2026-03-23 21:59 ` [GSoC PATCH v4 3/3] graph: add documentation and tests about --graph-lane-limit Pablo Sabater
2026-03-25 10:07 ` Johannes Sixt
2026-03-25 11:49 ` Pablo
2026-03-25 10:02 ` [GSoC PATCH v4 0/3] graph: add --graph-lane-limit option Johannes Sixt
2026-03-25 12:28 ` Pablo
2026-03-25 17:44 ` Johannes Sixt
2026-03-25 17:58 ` Pablo
2026-03-25 17:43 ` [GSoC PATCH v5 0/2] " Pablo Sabater
2026-03-25 17:44 ` [GSoC PATCH v5 1/2] " Pablo Sabater
2026-03-25 22:11 ` Junio C Hamano
2026-03-27 14:22 ` Pablo
2026-03-27 16:07 ` Pablo
2026-03-27 16:34 ` Junio C Hamano
2026-03-25 17:44 ` [GSoC PATCH v5 2/2] graph: add documentation and tests about --graph-lane-limit Pablo Sabater
2026-03-28 0:11 ` [GSoC PATCH v6 0/3] graph: add --graph-lane-limit option Pablo Sabater
2026-03-28 0:11 ` [GSoC PATCH v6 1/3] graph: limit the graph width to a hard-coded max Pablo Sabater
2026-03-28 0:11 ` [GSoC PATCH v6 2/3] graph: add --graph-lane-limit option Pablo Sabater
2026-03-28 0:11 ` [GSoC PATCH v6 3/3] graph: add truncation mark to capped lanes Pablo Sabater
2026-03-31 22:14 ` [GSoC PATCH v6 0/3] graph: add --graph-lane-limit option Junio C Hamano
2026-04-01 8:36 ` Johannes Sixt
2026-04-01 14:42 ` Pablo
2026-04-01 16:49 ` Junio C Hamano
2026-04-02 5:53 ` Pablo
2026-04-02 19:55 ` Junio C Hamano
2026-04-03 18:56 ` Tian Yuchen
2026-04-03 19:13 ` Pablo
2026-04-03 20:15 ` 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=acOIjm2KHXvopSQ/@szeder.dev \
--to=szeder.dev@gmail.com \
--cc=ayu.chandekar@gmail.com \
--cc=chandrapratap3519@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=jltobler@gmail.com \
--cc=karthik.188@gmail.com \
--cc=pabloosabaterr@gmail.com \
--cc=siddharthasthana31@gmail.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 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.