threads / patch / 51928

patchgit gui: fix staging a second line to a 1-line file

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

## tl;dr

5 messages between Sep 26, 2019 and Sep 26, 2019. Diffs are folded; open one to read it.

replies: 4people: 3as markdown or json

Johannes Schindelin via GitGitGadget· Sep 26, 2019, 17:43 UTC · lore

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

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
Johannes Schindelin via GitGitGadget· Sep 26, 2019, 17:43 UTC · re: Johannes Schindelin via GitGitGadget · lore
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(+)
Show changes to lib/diff.tcl +1 −0
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
Bert Wesarg· Sep 26, 2019, 18:25 UTC · re: Johannes Schindelin via GitGitGadget · lore

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

On Thu, Sep 26, 2019 at 7:43 PM Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com> wrote:

Show 31 quoted lines
>
> 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
Show 5 quoted lines
>
>                 # There is a special situation to take care of. Consider this
>                 # hunk:
> --
> gitgitgadget
Pratyush Yadav· Sep 26, 2019, 18:44 UTC · re: Bert Wesarg · lore

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

On 26/09/19 08:25PM, Bert Wesarg wrote:
Show 35 quoted lines
> 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· Sep 26, 2019, 21:05 UTC · re: Pratyush Yadav · lore

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

Hi,
On Fri, 27 Sep 2019, Pratyush Yadav wrote:
Show 36 quoted lines
> 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

Show 15 quoted lines
>
> 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
>

← back to recent threads