git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-gui: allow Ctrl+T to toggle multiple paths (Re: [BUG] git gui can't commit multiple files)

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Dec 1, 2017, 23:40 UTC
Message-ID
<20171201234013.GD18220@aiede.mtv.corp.google.com>
In-Reply-To
<CANtxn9KjTToqXKeO1mM8c6kD+jLf8QcAVXF46tX61uQB7YdKYA@mail.gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: git-gui: allow Ctrl+T to toggle multiple paths

In the Unstaged Changes panel, selecting multiple lines (using shift+click) and pressing ctrl+t to stage them causes one file to be staged instead of all of the selected files. The same also happens when unstaging files.

This regression appears to have been introduced by gitgui-0.21.0~7^2~1 (Allow keyboard control to work in the staging widgets, 2016-10-01).

Also reported by zosrothko as a Git-for-Windows issue: https://github.com/git-for-windows/git/issues/1012

[jn: fleshed out commit message]
Reported-by: Timon <timon37@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jonathan Nieder <jrn@google.com>
---
Hi Timon,
Timon wrote:
>>> On Sun, Dec 04, 2016 at 05:36:46PM +0100, Timon wrote:
Show 6 quoted lines
>>>> This is a regression in git 2.11.0 (version 2.10.2 is fine).
>>>>
>>>> In git-gui I select multiple files in the Unstaged Changes (using
>>>> shift+click) and press ctrl+t to stage them. Then only one files gets
>>>> staged instead of all of the selected files.
>>>> The same happens when unstaging files.
[...]
Show 13 quoted lines
> Originally I had this problem in gentoo and assumed in the end it's
> likely due to my specific configuration.
> However recently I switched to nixos and am still experiencing it.
>
> I've search again if I can find anything and lo and behold, it's
> already fixed in the *windows* version of git-gui...
>
> issue thread: https://github.com/git-for-windows/git/issues/1012
> commit: https://github.com/git-for-windows/git/commit/1c4d4e7cbcf404c168df5537d55e9afd57f2b01b
>
> I applied it locally to git-2.15.0 and can confirm it fixed the problem for me.
> If you need any more info/help from me, or would like me to test
> anything, feel free to ask.

Thanks for this pointer. I'm including the patch here so the project can consider applying it (it doesn't appear to have been sent upstream before). I have not tested it or verified the claim it makes about what change introduced this regression --- if you're able to help with that, that would be welcome.

Thanks, Jonathan

 git-gui.sh | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff --git a/git-gui.sh b/git-gui.sh
index ed24aa9..ef98fc2 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -2501,6 +2501,19 @@ proc toggle_or_diff {mode w args} {
 		set pos [split [$w index @$x,$y] .]
 		foreach {lno col} $pos break
 	} else {
+		if {$mode eq "toggle"} {
+			if {$w eq $ui_workdir} {
+				do_add_selection
+				set last_clicked {}
+				return
+			}
+			if {$w eq $ui_index} {
+				do_unstage_selection
+				set last_clicked {}
+				return
+			}
+		}
+
 		if {$last_clicked ne {}} {
 			set lno [lindex $last_clicked 1]
 		} else {
-- 
2.15.0.531.g2ccb3012c9
Previous: TimonNext: Jonathan Nieder
Message 5 of 7 in “[BUG] git gui can't commit multiple files”
  1. TimonDec 4, 2016
  2. David AguilarDec 4, 2016
  3. TimonDec 5, 2016
  4. TimonDec 1, 2017
  5. git-gui: allow Ctrl+T to toggle multiple paths (Re: [BUG] git gui can't commit multiple files)Jonathan Nieder, Dec 1, 2017
  6. Jonathan NiederDec 1, 2017
  7. TimonDec 3, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.