Re: [PATCH] git-gui: Perform rescan on window focus-in
- From
Pratyush Yadav <me@yadavpratyush.com>
- Date
- Jul 29, 2019, 08:15 UTC
- Message-ID
- <005d7946-3fbf-9c06-21fb-51f10d06f33e@yadavpratyush.com>
- In-Reply-To
- <724fb243-c660-ae04-1b2f-caf34794b799@gmail.com>
On 29/07/19 7:58 AM, Mark Levedahl wrote:
Show 24 quoted lines
> On 7/28/19 6:49 PM, brian m. carlson wrote:> On 2019-07-28 at 22:10:29, > Pratyush Yadav wrote: > >> The function is not documented, and I only started spelunking the > code a > >> couple days back, so I'll try to answer with what I know. It might > not be > >> the full picture. > >> > >> Running git-gui --trace, these commands are executed during a rescan: > >> > >> /usr/lib/git-core/git-rev-parse --verify HEAD > >> /usr/lib/git-core/git-update-index -q --unmerged --ignore-missing > --refresh > >> > > > > Great. This sounds like a well-reasoned change. I'll let other folks who > > use git-gui more chime in to see what they think as well. > > > > I'm assuming this does what is currently done by F5. > A simple rescan from git-gui in the git repository takes about 8 seconds > on my corporate laptop running Windows, making this happen on change of > window focus is definitely not a friendly change from my view point. >
This is a Windows problem maybe? On my Linux machine with an almost dead hard drive, it takes under 10ms to do a refresh on the git repository (which has about 56,000 commits).
Can you check what takes so long? I don't use Windows or I'd do this myself.
Go to git-gui.sh and add some prints to the rescan procedure (line 1450) to trace which operation takes time. It is not a shell script, but a tcl script, so you'd need to add "puts <your_string_here>" just to have an approximate idea of what takes so long.
Can someone else who uses git-gui comment on the time taken to rescan on the git repo (on Windows, Linux, or Mac)?
You can use this to see how long it takes to do a rescan. It will print the time taken to stdout:
-- >8 --
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh index 8ca2033dc8..7f2962f060 100755 --- a/git-gui/git-gui.sh +++ b/git-gui/git-gui.sh @@ -2360,7 +2360,11 @@ proc do_rescan {} { } proc ui_do_rescan {} { + set t [clock milliseconds] rescan {force_first_diff ui_ready} + set t2 [clock milliseconds] + + puts "Time elapsed in ui_do_rescan = [expr $t2 - $t]ms" } proc do_commit {} { -- >8 --
-- Regards, Pratyush Yadav