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

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
Previous: Mark LevedahlNext: Johannes Schindelin
Message 8 of 23 in “git-gui: Perform rescan on window focus-in”
  1. git-gui: Perform rescan on window focus-inPratyush Yadav, Jul 28, 2019
  2. brian m. carlsonJul 28, 2019
  3. Pratyush YadavJul 28, 2019
  4. Pratyush YadavJul 28, 2019
  5. brian m. carlsonJul 28, 2019
  6. Mark LevedahlJul 29, 2019
  7. Mark LevedahlJul 29, 2019
  8. Pratyush YadavJul 29, 2019
  9. Johannes SchindelinJul 31, 2019
  10. Pratyush YadavAug 1, 2019
  11. Johannes SchindelinAug 2, 2019
  12. Pratyush YadavAug 2, 2019
  13. Johannes SchindelinAug 3, 2019
  14. Pratyush YadavAug 4, 2019
  15. Johannes SchindelinAug 4, 2019
  16. Pratyush YadavAug 4, 2019
  17. Junio C HamanoAug 2, 2019
  18. Pratyush YadavAug 2, 2019
  19. Johannes SchindelinAug 4, 2019
  20. Mark LevedahlJul 29, 2019
  21. Junio C HamanoJul 29, 2019
  22. Pratyush YadavJul 29, 2019
  23. Pratyush YadavJul 28, 2019

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.