Re: [PATCH v2 10/14] range-diff: don't remove funcname from inner diff

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Thomas,

On Fri, 5 Jul 2019, Thomas Gummerer wrote:

> When postprocessing the inner diff in range-diff, we currently replace
> the whole hunk header line with just "@@".  This matches how 'git
> tbdiff' used to handle hunk headers as well.

Right, that's why I did it this way: `tbdiff` did it.

> Most likely this is being done because line numbers in the hunk header
> are not relevant without other changes.

Yep, and even worse, it also leads to uninteresting differences.

> They can for example easily change if a range is rebased, and lines are
> added/removed before a change that we actually care about in our ranges.

Exactly.

> However it can still be useful to have the function name that 'git
> diff' extracts as additional context for the change.
>
> Note that it is not guaranteed that the hunk header actually shows up
> in the range-diff, and this change only aims to improve the case where
> a hunk header would already be included in the final output.

Very important paragraph here, thank you!

> Signed-off-by: Thomas Gummerer <t.gummerer@xxxxxxxxx>
> ---
>  range-diff.c          | 8 +++++---
>  t/t3206-range-diff.sh | 6 +++---
>  2 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/range-diff.c b/range-diff.c
> index 916afa44c0..484b1ec5a9 100644
> --- a/range-diff.c
> +++ b/range-diff.c
> @@ -113,9 +113,11 @@ static int read_patches(const char *range, struct string_list *list)
>  				strbuf_addch(&buf, '\n');
>  			}
>  			continue;
> -		} else if (starts_with(line, "@@ "))
> -			strbuf_addstr(&buf, "@@");
> -		else if (!line[0] || starts_with(line, "index "))
> +		} else if (skip_prefix(line, "@@ ", &p)) {
> +			if (!(p = strstr(p, "@@")))
> +				die(_("invalid hunk header in inner diff"));

That's a bit more strict than the preimage. How about

			p = strstr(p, "@@");
			strbuf_addstr(&buf, p ? p : "@@");

instead?

The rest of the patch looks fine to me,
Dscho

> +			strbuf_addstr(&buf, p);
> +		} else if (!line[0] || starts_with(line, "index "))
>  			/*
>  			 * A completely blank (not ' \n', which is context)
>  			 * line is not valid in a diff.  We skip it
> diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
> index 048feaf6dd..aebd4e3693 100755
> --- a/t/t3206-range-diff.sh
> +++ b/t/t3206-range-diff.sh
> @@ -110,7 +110,7 @@ test_expect_success 'changed commit' '
>  	      14
>  	4:  a63e992 ! 4:  d966c5c s/12/B/
>  	    @@ -8,7 +8,7 @@
> -	     @@
> +	     @@ A
>  	      9
>  	      10
>  	    - B
> @@ -169,7 +169,7 @@ test_expect_success 'changed commit with sm config' '
>  	      14
>  	4:  a63e992 ! 4:  d966c5c s/12/B/
>  	    @@ -8,7 +8,7 @@
> -	     @@
> +	     @@ A
>  	      9
>  	      10
>  	    - B
> @@ -231,7 +231,7 @@ test_expect_success 'dual-coloring' '
>  	:      14<RESET>
>  	:<RED>4:  d966c5c <RESET><YELLOW>!<RESET><GREEN> 4:  8add5f1<RESET><YELLOW> s/12/B/<RESET>
>  	:    <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET>
> -	:    <CYAN> @@<RESET>
> +	:    <CYAN> @@ A<RESET>
>  	:      9<RESET>
>  	:      10<RESET>
>  	:    <REVERSE><RED>-<RESET><FAINT> BB<RESET>
> --
> 2.22.0.510.g264f2c817a
>
>




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux