Re: [PATCH v2] blame: prevent error if range ends past end of file

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

 



On Thu, Oct 26, 2017 at 12:01 AM, Isabella Stephens
<istephens@xxxxxxxxxxxxx> wrote:
> If the -L option is used to specify a line range in git blame, and the
> end of the range is past the end of the file, at present git will fail
> with a fatal error. This commit prevents such behaviour - instead the
> blame is display for any existing lines within the specified range.
>
> Signed-off-by: Isabella Stephens <istephens@xxxxxxxxxxxxx>
> ---

I like this change. We might want to document L to indicate that an L
that is outside the range of lines will show all lines that do match.

Maybe we also want it to only succeed if at least some lines are
blamed? Could we make it so that it fails if no lines are within the
range? (ie: the start point is too far in? or does it already do
such?)

Thanks,
Jake

>  builtin/blame.c               | 4 ++--
>  t/t8003-blame-corner-cases.sh | 5 +++--
>  2 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/blame.c b/builtin/blame.c
> index 67adaef4d..b5b9db147 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -878,13 +878,13 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
>                                     nth_line_cb, &sb, lno, anchor,
>                                     &bottom, &top, sb.path))
>                         usage(blame_usage);
> -               if (lno < top || ((lno || bottom) && lno < bottom))
> +               if ((lno || bottom) && lno < bottom)
>                         die(Q_("file %s has only %lu line",
>                                "file %s has only %lu lines",
>                                lno), path, lno);
>                 if (bottom < 1)
>                         bottom = 1;
> -               if (top < 1)
> +               if (top < 1 || lno < top)
>                         top = lno;
>                 bottom--;
>                 range_set_append_unsafe(&ranges, bottom, top);
> diff --git a/t/t8003-blame-corner-cases.sh b/t/t8003-blame-corner-cases.sh
> index 661f9d430..32b3788fe 100755
> --- a/t/t8003-blame-corner-cases.sh
> +++ b/t/t8003-blame-corner-cases.sh
> @@ -216,8 +216,9 @@ test_expect_success 'blame -L with invalid start' '
>  '
>
>  test_expect_success 'blame -L with invalid end' '
> -       test_must_fail git blame -L1,5 tres 2>errors &&
> -       test_i18ngrep "has only 2 lines" errors
> +       git blame -L1,5 tres >out &&
> +       cat out &&
> +       test $(wc -l < out) -eq 2
>  '
>
>  test_expect_success 'blame parses <end> part of -L' '
> --
> 2.14.1
>



[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