# [PATCH 1/1] git gui: fix staging a second line to a 1-line file

5 messages from 2019-09-26 to 2019-09-26. Participants: Johannes Schindelin via GitGitGadget, Bert Wesarg, Pratyush Yadav, Johannes Schindelin.
Thread: https://gitlist.dev/t/51928

## Johannes Schindelin via GitGitGadget, 2019-09-26 17:43

Subject: [PATCH 1/1] git gui: fix staging a second line to a 1-line file
Message-ID: <02ec6c5bde2f15c51e946c6806d8231fb5abffe5.1569519804.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/02ec6c5bde2f15c51e946c6806d8231fb5abffe5.1569519804.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.359.git.gitgitgadget@gmail.com>

```
From: Johannes Schindelin <johannes.schindelin@gmx.de>

When a 1-line file is augmented by a second line, and the user tries to
stage that single line via the "Stage Line" context menu item, we do not
want to see "apply: corrupt patch at line 5".

The reason for this error was that the hunk header looks like this:

	@@ -1 +1,2 @@

but the existing code expects the original range always to contain a
comma. This problem is easily fixed by cutting the string "1 +1,2"
(that Git GUI formerly mistook for the starting line) at the space.

This fixes https://github.com/git-for-windows/git/issues/515

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 lib/diff.tcl | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/diff.tcl b/lib/diff.tcl
index 4cae10a4c7..68c4a6c736 100644
--- a/lib/diff.tcl
+++ b/lib/diff.tcl
@@ -698,6 +698,7 @@ proc apply_range_or_line {x y} {
 		set hh [$ui_diff get $i_l "$i_l + 1 lines"]
 		set hh [lindex [split $hh ,] 0]
 		set hln [lindex [split $hh -] 1]
+		set hln [lindex [split $hln " "] 0]
 
 		# There is a special situation to take care of. Consider this
 		# hunk:
-- 
gitgitgadget

```

## Johannes Schindelin via GitGitGadget, 2019-09-26 17:43

Subject: [PATCH 0/1] git gui: fix staging a second line to a 1-line file
Message-ID: <pull.359.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/pull.359.git.gitgitgadget%40gmail.com

```
Yet another patch that is carried in Git for Windows for quite a long time.
This fixes https://github.com/git-for-windows/git/issues/515.

This commit was contributed as https://github.com/patthoyts/git/gui/pull/7 
which was ignored for almost three years, and then as 
https://github.com/prati0100/git-gui/pull/1 which was rejected in favor of a
mailing list-centric workflow.

The patch is based on Git GUI's master branch at 
https://github.com/prati0100/git-gui/.

Johannes Schindelin (1):
  git gui: fix staging a second line to a 1-line file

 lib/diff.tcl | 1 +
 1 file changed, 1 insertion(+)


base-commit: 12d29c326551a6570594db525bea42ad9cea8028
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-359%2Fdscho%2Fgit-gui-stage-line-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-359/dscho/git-gui-stage-line-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/359
-- 
gitgitgadget

```

## Bert Wesarg, 2019-09-26 18:25

Subject: Re: [PATCH 1/1] git gui: fix staging a second line to a 1-line file
Message-ID: <CAKPyHN1XJHtcdzhaaeACFfb9=7PxdyHvrdafwJxDwQjbW_hbcA@mail.gmail.com>
URL: https://gitlist.dev/e/CAKPyHN1XJHtcdzhaaeACFfb9%3D7PxdyHvrdafwJxDwQjbW_hbcA%40mail.gmail.com
In-Reply-To: <02ec6c5bde2f15c51e946c6806d8231fb5abffe5.1569519804.git.gitgitgadget@gmail.com>

```
On Thu, Sep 26, 2019 at 7:43 PM Johannes Schindelin via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> When a 1-line file is augmented by a second line, and the user tries to
> stage that single line via the "Stage Line" context menu item, we do not
> want to see "apply: corrupt patch at line 5".
>
> The reason for this error was that the hunk header looks like this:
>
>         @@ -1 +1,2 @@
>
> but the existing code expects the original range always to contain a
> comma. This problem is easily fixed by cutting the string "1 +1,2"
> (that Git GUI formerly mistook for the starting line) at the space.
>
> This fixes https://github.com/git-for-windows/git/issues/515
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  lib/diff.tcl | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/diff.tcl b/lib/diff.tcl
> index 4cae10a4c7..68c4a6c736 100644
> --- a/lib/diff.tcl
> +++ b/lib/diff.tcl
> @@ -698,6 +698,7 @@ proc apply_range_or_line {x y} {
>                 set hh [$ui_diff get $i_l "$i_l + 1 lines"]
>                 set hh [lindex [split $hh ,] 0]
>                 set hln [lindex [split $hh -] 1]
> +               set hln [lindex [split $hln " "] 0]

this is already in that master

https://github.com/prati0100/git-gui/blob/60c60b627e81bf84e1cb01729d2ae882178f079d/lib/diff.tcl#L727

>
>                 # There is a special situation to take care of. Consider this
>                 # hunk:
> --
> gitgitgadget

```

## Pratyush Yadav, 2019-09-26 18:44

Subject: Re: [PATCH 1/1] git gui: fix staging a second line to a 1-line file
Message-ID: <20190926184449.swkqutltmwpzde6s@yadavpratyush.com>
URL: https://gitlist.dev/e/20190926184449.swkqutltmwpzde6s%40yadavpratyush.com
In-Reply-To: <CAKPyHN1XJHtcdzhaaeACFfb9=7PxdyHvrdafwJxDwQjbW_hbcA@mail.gmail.com>

```
On 26/09/19 08:25PM, Bert Wesarg wrote:
> On Thu, Sep 26, 2019 at 7:43 PM Johannes Schindelin via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
> >
> > From: Johannes Schindelin <johannes.schindelin@gmx.de>
> >
> > When a 1-line file is augmented by a second line, and the user tries to
> > stage that single line via the "Stage Line" context menu item, we do not
> > want to see "apply: corrupt patch at line 5".
> >
> > The reason for this error was that the hunk header looks like this:
> >
> >         @@ -1 +1,2 @@
> >
> > but the existing code expects the original range always to contain a
> > comma. This problem is easily fixed by cutting the string "1 +1,2"
> > (that Git GUI formerly mistook for the starting line) at the space.
> >
> > This fixes https://github.com/git-for-windows/git/issues/515
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> >  lib/diff.tcl | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/lib/diff.tcl b/lib/diff.tcl
> > index 4cae10a4c7..68c4a6c736 100644
> > --- a/lib/diff.tcl
> > +++ b/lib/diff.tcl
> > @@ -698,6 +698,7 @@ proc apply_range_or_line {x y} {
> >                 set hh [$ui_diff get $i_l "$i_l + 1 lines"]
> >                 set hh [lindex [split $hh ,] 0]
> >                 set hln [lindex [split $hh -] 1]
> > +               set hln [lindex [split $hln " "] 0]
> 
> this is already in that master

Yes, this was recently merged in when I was pulling in some stuff that 
went directly into git.git's git-gui subtree, instead of making it into 
git-gui first (thread at [0] in case someone wants to find out more). 
This commit was one of those. Junio directly merged this commit into 
git/git-gui, along with some other stuff from Johannes in the commit 
02a5f25d95 (Merge branch 'js/misc-git-gui-stuff' of ../git-gui) of 
git.git.

[0] https://public-inbox.org/git/CAGr--=KXqFbivuXHPNecb3dBR_hx8QqWoR4pBGXy7uOiT+ESbg@mail.gmail.com/

-- 
Regards,
Pratyush Yadav

```

## Johannes Schindelin, 2019-09-26 21:05

Subject: Re: [PATCH 1/1] git gui: fix staging a second line to a 1-line file
Message-ID: <nycvar.QRO.7.76.6.1909262303310.15067@tvgsbejvaqbjf.bet>
URL: https://gitlist.dev/e/nycvar.QRO.7.76.6.1909262303310.15067%40tvgsbejvaqbjf.bet
In-Reply-To: <20190926184449.swkqutltmwpzde6s@yadavpratyush.com>

```
Hi,


On Fri, 27 Sep 2019, Pratyush Yadav wrote:

> On 26/09/19 08:25PM, Bert Wesarg wrote:
> > On Thu, Sep 26, 2019 at 7:43 PM Johannes Schindelin via GitGitGadget
> > <gitgitgadget@gmail.com> wrote:
> > >
> > > From: Johannes Schindelin <johannes.schindelin@gmx.de>
> > >
> > > When a 1-line file is augmented by a second line, and the user tries to
> > > stage that single line via the "Stage Line" context menu item, we do not
> > > want to see "apply: corrupt patch at line 5".
> > >
> > > The reason for this error was that the hunk header looks like this:
> > >
> > >         @@ -1 +1,2 @@
> > >
> > > but the existing code expects the original range always to contain a
> > > comma. This problem is easily fixed by cutting the string "1 +1,2"
> > > (that Git GUI formerly mistook for the starting line) at the space.
> > >
> > > This fixes https://github.com/git-for-windows/git/issues/515
> > >
> > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > > ---
> > >  lib/diff.tcl | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/lib/diff.tcl b/lib/diff.tcl
> > > index 4cae10a4c7..68c4a6c736 100644
> > > --- a/lib/diff.tcl
> > > +++ b/lib/diff.tcl
> > > @@ -698,6 +698,7 @@ proc apply_range_or_line {x y} {
> > >                 set hh [$ui_diff get $i_l "$i_l + 1 lines"]
> > >                 set hh [lindex [split $hh ,] 0]
> > >                 set hln [lindex [split $hh -] 1]
> > > +               set hln [lindex [split $hln " "] 0]
> >
> > this is already in that master

Sorry, I thought I had rebased, but I obviously failed to do so.

Ciao,
Johannes
>
> Yes, this was recently merged in when I was pulling in some stuff that
> went directly into git.git's git-gui subtree, instead of making it into
> git-gui first (thread at [0] in case someone wants to find out more).
> This commit was one of those. Junio directly merged this commit into
> git/git-gui, along with some other stuff from Johannes in the commit
> 02a5f25d95 (Merge branch 'js/misc-git-gui-stuff' of ../git-gui) of
> git.git.
>
> [0] https://public-inbox.org/git/CAGr--=KXqFbivuXHPNecb3dBR_hx8QqWoR4pBGXy7uOiT+ESbg@mail.gmail.com/
>
> --
> Regards,
> Pratyush Yadav
>

```
