All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dragan Simic <dsimic@manjaro.org>
To: Peter Hutterer <peter.hutterer@who-t.net>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	David Heidelberg <david@ixit.cz>,
	Phillip Wood <phillip.wood123@gmail.com>
Subject: Re: [PATCH v5] diff: add diff.srcPrefix and diff.dstPrefix configuration variables
Date: Fri, 15 Mar 2024 07:02:49 +0100	[thread overview]
Message-ID: <deb0800a3ba12ad0f6837f198c16e701@manjaro.org> (raw)
In-Reply-To: <20240315055448.GA2253326@quokka>

On 2024-03-15 06:54, Peter Hutterer wrote:
> Allow the default prefixes "a/" and "b/" to be tweaked by the
> diff.srcPrefix and diff.dstPrefix configuration variables.
> 
> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

Looking good to me!

Reviewed-by: Dragan Simic <dsimic@manjaro.org>

> ---
> Changes to v4 (as pointed out by Dragan):
> - copy/paste-o fixed in the dstprefix test
> - reworded the description for the tests as suggested
> 
> Dragan: good catch on the test, thanks for that.

Thanks for applying the suggestions in v5.

> I think for the
> rewording of --default-prefix it might be faster if you reword it?
> Otherwise we might keep spinning this one for a quite a bit longer :)

Agreed, I had exactly the same in mind. :)

>  Documentation/config/diff.txt  |  6 ++++++
>  Documentation/diff-options.txt |  5 +++--
>  diff.c                         | 14 ++++++++++++--
>  t/t4013-diff-various.sh        | 35 ++++++++++++++++++++++++++++++++++
>  4 files changed, 56 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/config/diff.txt 
> b/Documentation/config/diff.txt
> index 6c7e09a1ef5e..fea89291c675 100644
> --- a/Documentation/config/diff.txt
> +++ b/Documentation/config/diff.txt
> @@ -111,6 +111,12 @@ diff.mnemonicPrefix::
>  diff.noprefix::
>  	If set, 'git diff' does not show any source or destination prefix.
> 
> +diff.srcPrefix::
> +	If set, 'git diff' uses this source prefix. Defaults to "a/".
> +
> +diff.dstPrefix::
> +	If set, 'git diff' uses this destination prefix. Defaults to "b/".
> +
>  diff.relative::
>  	If set to 'true', 'git diff' does not show changes outside of the 
> directory
>  	and show pathnames relative to the current directory.
> diff --git a/Documentation/diff-options.txt 
> b/Documentation/diff-options.txt
> index aaaff0d46f0c..0e9456957e37 100644
> --- a/Documentation/diff-options.txt
> +++ b/Documentation/diff-options.txt
> @@ -865,8 +865,9 @@ endif::git-format-patch[]
> 
>  --default-prefix::
>  	Use the default source and destination prefixes ("a/" and "b/").
> -	This is usually the default already, but may be used to override
> -	config such as `diff.noprefix`.
> +	This overrides configuration variables such as `diff.noprefix`,
> +	`diff.srcPrefix`, `diff.dstPrefix`, and `diff.mnemonicPrefix`
> +	(see `git-config`(1)).
> 
>  --line-prefix=<prefix>::
>  	Prepend an additional prefix to every line of output.
> diff --git a/diff.c b/diff.c
> index e50def45383e..108c1875775d 100644
> --- a/diff.c
> +++ b/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,
> @@ -5362,6 +5370,8 @@ static int diff_opt_default_prefix(const struct
> option *opt,
> 
>  	BUG_ON_OPT_NEG(unset);
>  	BUG_ON_OPT_ARG(optarg);
> +	diff_src_prefix = "a/";
> +	diff_dst_prefix = "b/";
>  	diff_set_default_prefix(options);
>  	return 0;
>  }
> diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
> index 1e3b2dbea484..6bf69888f258 100755
> --- a/t/t4013-diff-various.sh
> +++ b/t/t4013-diff-various.sh
> @@ -663,6 +663,41 @@ test_expect_success 'diff --default-prefix
> overrides diff.mnemonicprefix' '
>  	check_prefix actual a/file0 b/file0
>  '
> 
> +test_expect_success 'diff respects diff.srcprefix' '
> +	git -c diff.srcprefix=x/ diff >actual &&
> +	check_prefix actual x/file0 b/file0
> +'
> +
> +test_expect_success 'diff respects diff.dstprefix' '
> +	git -c diff.dstprefix=y/ diff >actual &&
> +	check_prefix actual a/file0 y/file0
> +'
> +
> +test_expect_success 'diff --src-prefix overrides diff.srcprefix' '
> +	git -c diff.srcprefix=y/ diff --src-prefix=z/ >actual &&
> +	check_prefix actual z/file0 b/file0
> +'
> +
> +test_expect_success 'diff --dst-prefix overrides diff.dstprefix' '
> +	git -c diff.dstprefix=y/ diff --dst-prefix=z/ >actual &&
> +	check_prefix actual a/file0 z/file0
> +'
> +
> +test_expect_success 'diff.*prefix ignored with diff.noprefix' '
> +	git -c diff.dstprefix=y/ -c diff.srcprefix=x/ -c diff.noprefix diff 
> >actual &&
> +	check_prefix actual file0 file0
> +'
> +
> +test_expect_success 'diff.*prefix ignored with diff.mnemonicprefix' '
> +	git -c diff.dstprefix=x/ -c diff.srcprefix=y/ -c diff.mnemonicprefix
> diff >actual &&
> +	check_prefix actual i/file0 w/file0
> +'
> +
> +test_expect_success 'diff.*prefix ignored with --default-prefix' '
> +	git -c diff.dstprefix=x/ -c diff.srcprefix=y/ diff --default-prefix 
> >actual &&
> +	check_prefix actual a/file0 b/file0
> +'
> +
>  test_expect_success 'diff --no-renames cannot be abbreviated' '
>  	test_expect_code 129 git diff --no-rename >actual 2>error &&
>  	test_must_be_empty actual &&

  reply	other threads:[~2024-03-15  6:02 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
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 [this message]
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=deb0800a3ba12ad0f6837f198c16e701@manjaro.org \
    --to=dsimic@manjaro.org \
    --cc=david@ixit.cz \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peter.hutterer@who-t.net \
    --cc=phillip.wood123@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.