From: Junio C Hamano <gitster@pobox.com>
To: Peter Hutterer <peter.hutterer@who-t.net>
Cc: git@vger.kernel.org, David Heidelberg <david@ixit.cz>
Subject: Re: [PATCH] diff: add diff.srcprefix and diff.dstprefix option support
Date: Mon, 11 Mar 2024 11:06:36 -0700 [thread overview]
Message-ID: <xmqqplw0r6c3.fsf@gitster.g> (raw)
In-Reply-To: <20240311023217.GA2345739@quokka> (Peter Hutterer's message of "Mon, 11 Mar 2024 12:32:17 +1000")
Peter Hutterer <peter.hutterer@who-t.net> writes:
> Subject: Re: [PATCH] diff: add diff.srcprefix and diff.dstprefix option support
"option support" -> "configuration variables"
> The git option equivalent to --src-prefix and --dst-prefix.
> Both of these are of lower precedence than the diff.noprefix and
> diff.mnemonicprefix option.
I think it will become simpler to sell and explain if you do not
mention these options, and instead say that we are tweaking the
default prefixes used when none of the other options are used,
something like:
Allow the default prefixes "a/" and "b/" to be tweaked by
diff.srcprefix and diff.dstprefix configuration variables.
> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
> ---
> +diff.srcprefix::
> + If set, 'git diff' uses this source prefix.
Add "Defaults to 'a/'", perhaps?
> @@ -3429,6 +3437,14 @@ void diff_set_default_prefix(struct diff_options *options)
> options->b_prefix = "b/";
> }
>
> +void diff_set_custom_prefix(struct diff_options *options, const char *src_prefix, const char *dst_prefix)
> +{
> + if (src_prefix)
> + options->a_prefix = src_prefix;
> + if (dst_prefix)
> + options->b_prefix = dst_prefix;
> +}
> +
> struct userdiff_driver *get_textconv(struct repository *r,
> struct diff_filespec *one)
> {
> @@ -4736,6 +4752,8 @@ void repo_diff_setup(struct repository *r, struct diff_options *options)
> diff_set_noprefix(options);
> } else if (!diff_mnemonic_prefix) {
> diff_set_default_prefix(options);
> + if (diff_src_prefix || diff_dst_prefix)
> + diff_set_custom_prefix(options, diff_src_prefix, diff_dst_prefix);
> }
This feels somewhat roundabout way to do this. Instead of touching
this part at all, and not adding diff_set_custom_prefix() function,
how about just patching diff_set_default_prefix()? The function
does not even have to be public and there is no need to touch the
header file.
Here is how I would simplify the code change part if I were doing
this patch. It seems to pass t4013 (including your additional
ones).
Thanks.
diff.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git i/diff.c w/diff.c
index e50def4538..4439b1a958 100644
--- i/diff.c
+++ w/diff.c
@@ -62,6 +62,8 @@ static const char *diff_order_file_cfg;
int diff_auto_refresh_index = 1;
static int diff_mnemonic_prefix;
static int diff_no_prefix;
+static const char *diff_src_prefix = "a/";
+static const char *diff_dst_prefix = "b/";
static int diff_relative;
static int diff_stat_name_width;
static int diff_stat_graph_width;
@@ -408,6 +410,12 @@ int git_diff_ui_config(const char *var, const char *value,
diff_no_prefix = git_config_bool(var, value);
return 0;
}
+ if (!strcmp(var, "diff.srcprefix")) {
+ return git_config_string(&diff_src_prefix, var, value);
+ }
+ if (!strcmp(var, "diff.dstprefix")) {
+ return git_config_string(&diff_dst_prefix, var, value);
+ }
if (!strcmp(var, "diff.relative")) {
diff_relative = git_config_bool(var, value);
return 0;
@@ -3425,8 +3433,8 @@ void diff_set_noprefix(struct diff_options *options)
void diff_set_default_prefix(struct diff_options *options)
{
- options->a_prefix = "a/";
- options->b_prefix = "b/";
+ options->a_prefix = diff_src_prefix;
+ options->b_prefix = diff_dst_prefix;
}
struct userdiff_driver *get_textconv(struct repository *r,
next prev parent reply other threads:[~2024-03-11 18:06 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-11 2:32 [PATCH] diff: add diff.srcprefix and diff.dstprefix option support Peter Hutterer
2024-03-11 18:06 ` Junio C Hamano [this message]
2024-03-12 0:57 ` [PATCH v2] diff: add diff.srcprefix and diff.dstprefix configuration variables Peter Hutterer
2024-03-12 19:23 ` Junio C Hamano
2024-03-12 19:29 ` Dragan Simic
2024-03-12 23:15 ` [PATCH v3] diff: add diff.srcPrefix and diff.dstPrefix " Peter Hutterer
2024-03-13 2:15 ` Dragan Simic
2024-03-13 3:26 ` Dragan Simic
2024-03-13 15:06 ` Phillip Wood
2024-03-13 15:14 ` Dragan Simic
2024-03-13 15:24 ` Junio C Hamano
2024-03-13 15:28 ` Dragan Simic
2024-03-13 15:04 ` Phillip Wood
2024-03-13 15:29 ` Junio C Hamano
2024-03-13 16:18 ` Phillip Wood
2024-03-13 17:55 ` Junio C Hamano
2024-03-14 5:06 ` Peter Hutterer
2024-03-13 20:23 ` Dragan Simic
2024-03-15 1:03 ` [PATCH v4] " Peter Hutterer
2024-03-15 3:53 ` Dragan Simic
2024-03-15 5:54 ` [PATCH v5] " Peter Hutterer
2024-03-15 6:02 ` Dragan Simic
2024-03-15 17:00 ` Junio C Hamano
2024-03-15 19:13 ` Dragan Simic
2024-03-16 5:57 ` Junio C Hamano
2024-03-16 6:41 ` Dragan Simic
2024-03-18 3:49 ` Peter Hutterer
2024-03-18 4:39 ` 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=xmqqplw0r6c3.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=david@ixit.cz \
--cc=git@vger.kernel.org \
--cc=peter.hutterer@who-t.net \
/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).