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

Rebase dialog is very slow on confict during big rebase #11196

Closed
dosercz opened this issue Sep 6, 2023 · 6 comments · Fixed by #11197
Closed

Rebase dialog is very slow on confict during big rebase #11196

dosercz opened this issue Sep 6, 2023 · 6 comments · Fixed by #11197
Labels
type: git issue Issues that attributable to git

Comments

@dosercz
Copy link

dosercz commented Sep 6, 2023

Environment

  • Git Extensions 4.1.0.16698
  • Build 1fe52a1
  • Git 2.42.0.windows.2
  • Microsoft Windows NT 10.0.19045.0
  • .NET 6.0.21
  • DPI 144dpi (150% scaling)
  • Portable: False
  • Microsoft.WindowsDesktop.App Versions
    Microsoft.WindowsDesktop.App 6.0.21 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Issue description

I'm making interactive rebase of a lot of commits (approx 1000) and if there is a conflict and Rebase dialog is opened whole GUI is frozen for 1+ minute.
It depends on number of rebased commits. If there are only few commits, it's not a problem. But with increasing number of commits it takes more time to open dialog.

Steps to reproduce

  1. Make interactive rebase of branch with a lot of commits (1000)
  2. Wait for conflict
  3. Click to OK button in Process dialog
  4. Wait few minutes before Rebase dialog is opened and respond to user interaction

Did this work in previous version of GitExtensions?

No

Diagnostics

No response

@gerhardol
Copy link
Member

This need to be directed to Git, the GUI cannot speed up Git itself.

@gerhardol gerhardol added type: git issue Issues that attributable to git and removed 👓 status: needs review labels Sep 6, 2023
@dosercz
Copy link
Author

dosercz commented Sep 6, 2023

Git is fast IMO, if there is no conflict, rebase runs fast. But loading dialog content is very slow. Probably rendering commits in Rebase dialog... doing rebase from cmd without GitExtensions is fast.

@mstv
Copy link
Member

mstv commented Sep 6, 2023

More or less a duplicate of #10698

@pmiossec
Copy link
Member

pmiossec commented Sep 6, 2023

@dosercz Is it for a rebase or an interactive rebase? or both?

@dosercz
Copy link
Author

dosercz commented Sep 7, 2023

It happens to me during an interactive rebase. I'm using it in most cases...

@pmiossec
Copy link
Member

pmiossec commented Sep 7, 2023

More or less a duplicate of #10698

Indeed, duplicate of this one. Let's close this one and continue the discussion on the other one (as I have a PoC giving interesting results)

@pmiossec pmiossec closed this as completed Sep 7, 2023
pmiossec added a commit to pmiossec/gitextensions that referenced this issue Sep 7, 2023
by retrieving all the commits data with only one `git log` call
instead of one by commit.
It is possible as when rebasing, all the commits belong to the same branch.

Kept a fall back to previous way to retrieve commit data for 1 commit
if commit is not in the one loaded.

Fixes gitextensions#10698 and gitextensions#11196
pmiossec added a commit to pmiossec/gitextensions that referenced this issue Sep 7, 2023
by retrieving all the commits data with only one `git log` call
instead of one by commit.
It is possible as when rebasing, all the commits belong to the same branch.

Kept a fall back to previous way to retrieve commit data for 1 commit
if commit is not in the one loaded.

Results with 7448 commits rebased: 2s instead of 4m50 previously

Fixes gitextensions#10698 and gitextensions#11196
pmiossec added a commit to pmiossec/gitextensions that referenced this issue Sep 7, 2023
by retrieving all the commits data with only one `git log` call
instead of one by commit.
It is possible as when rebasing, all the commits belong to the same branch.

Kept a fall back to previous way to retrieve commit data for 1 commit
if commit is not in the one loaded.

Results with 7448 commits rebased: 2s instead of 4m50 previously

Fixes gitextensions#10698 and gitextensions#11196
@ghost ghost added the 🚧 status: in progress Issues which have associated PRs label Sep 10, 2023
pmiossec added a commit to pmiossec/gitextensions that referenced this issue Sep 14, 2023
by retrieving all the commits data with only one `git log` call
instead of one by commit.
It is possible as when rebasing, all the commits belong to the same branch.

Kept a fall back to previous way to retrieve commit data for 1 commit
if commit is not in the one loaded.

and read bodies of all rebased commits
(even the ones older than 6 monthes like it was the case before.
RevisionReader had to be adapted to do that.)

Results with 7448 commits rebased: 2s instead of 4m50 previously

Fixes gitextensions#10698 and gitextensions#11196
pmiossec added a commit that referenced this issue Sep 15, 2023
by retrieving all the commits data with only one `git log` call
instead of one by commit.
It is possible as when rebasing, all the commits belong to the same branch.

Kept a fall back to previous way to retrieve commit data for 1 commit
if commit is not in the one loaded.

and read bodies of all rebased commits
(even the ones older than 6 monthes like it was the case before.
RevisionReader had to be adapted to do that.)

Results with 7448 commits rebased: 2s instead of 4m50 previously

Fixes #10698 and #11196
@ghost ghost removed the 🚧 status: in progress Issues which have associated PRs label Sep 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: git issue Issues that attributable to git
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants