Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Go To Commit" dialog is SLOW when there are many tags #11683

Open
cforbin1 opened this issue Apr 17, 2024 · 0 comments
Open

"Go To Commit" dialog is SLOW when there are many tags #11683

cforbin1 opened this issue Apr 17, 2024 · 0 comments

Comments

@cforbin1
Copy link

cforbin1 commented Apr 17, 2024

Environment

  • GitExtensions version: 4.2.1.17611
  • GIT version: 2.44.0.windows.1
  • OS version: Microsoft Windows NT 10.0.19045.0 (Windows 10 Enterprise 22H2 build 19045.4170)
  • .NET version: 6.0.28

Issue description

When there are many tags in the repo, using menu choice [Navigate] > [Go To Commit] (key default Cttrl+Shift+G), the dialog box appears quickly but takes a long time to be ready, due to loading all the tags into the "Go to tag" control. If you want to simply enter a commit expression, you cannot rapidly go to it: clicking in the control just puts the dialog into "(Not Responding)" status. The user must wait for the 45-95 seconds it takes to load the tag window. If the user is in a hurry and already has a commit expression to enter, this is a counterproductive delay: the user doesn't need the control populated in order to enter their expression.

Possible Corrective Actions (in order of likely desireability):

  • you could put the control loaders in separate threads so the dialog is immediately ready, and set the dialog up to enable the "Go" button as soon as a commit expression is entered
  • you could preload a cache for the controls when a checkout is done (again, probably in a separate thread so you don't hold up other things)
  • you could force the user to await the controls loading for the first visit, but cache the data at that time, which would at least mean all subsequent visits would be quick
  • other solutions may be available and should be investigated

Steps to reproduce

  1. Open a repo that has a LOT of tags. (Unfortunately, I can't tell you how many tags is "a lot." It will require investigation.)
  2. Find a commit hash somewhere else in the history than where you are. Note the first 6-8 characters.
  3. Go to menu choice [Navigate] > [Go To Commit] (or use the default key mapping of Ctrl+Shift+G if that is valid on your machine).
  4. When the dialog appears, immediately click on the "Commit expression" control and try to enter your partial commit hash.
  5. Observe the dialog goes into "(Not Responding)" state.
  6. Further observe that you have to wait (potentially more than a minute!) for the dialog to become ready. If you attempt to cancel the operation using the "X" in the dialog banner, in Windows you get the OS's warning dialog that the application is not responding and you can either kill the application or wait for the dialog to be ready. Thus if you open this dialog in a hurry in a tag-rich repo, YOU ARE STUCK until it has loaded all the tags.

Did this work in previous version of GitExtensions?

Don't know.

Diagnostics

No diagnostics available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant