jesseduffield / jesseduffield/lazygit

Lazygit very slow on osx sonoma and small repo

Open
#3,980 4 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Go
Stars
82.4k
Forks
3k
Avg merge
2d 18h
Merged PRs (30d)
19

Description

**Describe the bug**
lazygit is very slow to give diffs and slows down terminal even after exit for a few seconds

**To Reproduce**
Steps to reproduce the behavior:

1. launch lazygit
2. scroll down some unstages changes
3. observe "loading..."

**Expected behavior**
Previously, on ubuntu it was lightning fast

**Screenshots**

https://github.com/user-attachments/assets/e605d8bd-59f5-4656-849e-e554ce3e26e9

**Version info:**
```
➜ ~ lazygit --version
commit=, build date=, build source=homebrew, version=0.44.1, os=darwin, arch=arm64, git version=2.47.0
➜ ~ git --version
git version 2.47.0
➜ ~ which git
/opt/homebrew/bin/git
```
Macosx sonoma 14.7

**Additional context**
Ive also tried this using just the git that ships with mac (2.39) instead of homebrew - same issue
Also on bash using native terminal app - same issue

lazygit logs:
```
➜ ~ lazygit --logs
Tailing log file /Users/dmesa/.local/state/lazygit/development.log

Oct 10 12:18:44 |INFO| refreshing the following scopes in sync mode: files
Oct 10 12:18:44 |INFO| Heap memory in use: 4.2 MB
Oct 10 12:18:44 |INFO| refreshed merge conflicts in 508.834µs
Oct 10 12:18:47 |INFO| git tag --list -n --sort=-creatordate (4.524746333s)
Oct 10 12:18:47 |INFO| postRefreshUpdate for tags took 20.5µs
Oct 10 12:18:49 |INFO| Receiving focus - refreshing
Oct 10 12:18:49 |INFO| refreshing all scopes in async mode
Oct 10 12:18:49 |DEBU| RunCommand command="git tag --list -n --sort=-creatordate"
Oct 10 12:18:49 |INFO| Refresh took 638µs
Oct 10 12:18:49 |DEBU| RunCommand command="git stash list -z --pretty=%ct|%gs"
Oct 10 12:18:52 |INFO| git status --untracked-files=all --porcelain -z --find-renames=50% (9.02547275s)
Oct 10 12:18:52 |DEBU| using cache for key status.showUntrackedFiles
Oct 10 12:18:52 |INFO| postRefreshUpdate for submodules took 15.708µs
Oct 10 12:18:52 |DEBU| RunCommand command="git status --untracked-files=all --porcelain -z --find-renames=50%"
Oct 10 12:18:52 |INFO| postRefreshUpdate for files took 788.542µs
Oct 10 12:18:54 |INFO| Heap memory in use: 6.3 MB
Oct 10 12:18:56 |INFO| git rev-parse --abbrev-ref --verify HEAD (13.5325895s)
Oct 10 12:18:56 |DEBU| RunCommand command="git merge-base master master@{u}"
Oct 10 12:18:56 |DEBU| RunCommand command="git merge-base HEAD refs/remotes/origin/master"
Oct 10 12:19:01 |INFO| git for-each-ref --sort=refname --format=%(refname:short) refs/remotes (18.03377775s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for remotes took 188.667µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for remoteBranches took 5.083µs
Oct 10 12:19:01 |INFO| git merge-base HEAD refs/remotes/origin/master (4.858140375s)
Oct 10 12:19:01 |INFO| git -c log.showSignature=false log -g --abbrev=40 --format=%h%x00%ct%x00%gs%x00%p (18.392961875s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for reflogCommits took 46.417µs
Oct 10 12:19:01 |DEBU| RunCommand command="git for-each-ref --sort=-committerdate --format=%(HEAD)%00%(refname:short)%00%(upstream:short)%00%(upstream:track)%00%(push:track)%00%(subject)%00%(objectname)%00%(committerdate:unix) refs/heads"
Oct 10 12:19:01 |INFO| git stash list -z --pretty=%ct|%gs (18.393094792s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for stash took 7.125µs
Oct 10 12:19:01 |INFO| git status --untracked-files=all --porcelain -z --find-renames=50% (9.365037958s)
Oct 10 12:19:01 |INFO| refreshed files in 17.30980925s
Oct 10 12:19:01 |INFO| Refresh took 17.31084075s
Oct 10 12:19:01 |DEBU| using cache for key status.showUntrackedFiles
Oct 10 12:19:01 |INFO| refreshing the following scopes in sync mode: files
Oct 10 12:19:01 |INFO| refreshed merge conflicts in 46.667µs
Oct 10 12:19:01 |DEBU| RunCommand command="git status --untracked-files=all --porcelain -z --find-renames=50%"
Oct 10 12:19:01 |INFO| git stash list -z --pretty=%ct|%gs (12.692843791s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for stash took 77.875µs
Oct 10 12:19:01 |INFO| git -c log.showSignature=false log -g --abbrev=40 --format=%h%x00%ct%x00%gs%x00%p (12.697166375s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for reflogCommits took 34.541µs
Oct 10 12:19:01 |INFO| git merge-base master master@{u} (4.872367542s)
Oct 10 12:19:01 |INFO| git for-each-ref --sort=-committerdate --format=%(HEAD)%00%(refname:short)%00%(upstream:short)%00%(upstream:track)%00%(push:track)%00%(subject)%00%(objectname)%00%(committerdate:unix) refs/heads (16.405167ms)
Oct 10 12:19:01 |DEBU| RunCommand command="git worktree list --porcelain"
Oct 10 12:19:01 |INFO| git for-each-ref --sort=refname --format=%(refname:short) refs/remotes (12.706067333s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for remotes took 121.375µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for remoteBranches took 8.958µs
Oct 10 12:19:01 |INFO| git tag --list -n --sort=-creatordate (12.706366083s)
Oct 10 12:19:01 |INFO| postRefreshUpdate for tags took 6.583µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for submodules took 15.917µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for files took 272.333µs
Oct 10 12:19:01 |INFO| git log HEAD --topo-order --oneline --pretty=format:%H%x00%at%x00%aN%x00%ae%x00%D%x00%p%x00%m%x00%s --abbrev=40 -300 --no-show-signature -- (4.890090375s)
Oct 10 12:19:01 |DEBU| using cache for key rebase.updateRefs
Oct 10 12:19:01 |INFO| postRefreshUpdate for commits took 181.167µs
Oct 10 12:19:01 |DEBU| RunCommand command="git rev-parse --abbrev-ref --verify HEAD"
Oct 10 12:19:01 |INFO| git status --untracked-files=all --porcelain -z --find-renames=50% (30.352167ms)
Oct 10 12:19:01 |INFO| git worktree list --porcelain (15.403375ms)
Oct 10 12:19:01 |DEBU| using cache for key status.showUntrackedFiles
Oct 10 12:19:01 |DEBU| RunCommand command="git -C /Users/dmesa/.dotfiles rev-parse --path-format=absolute --absolute-git-dir"
Oct 10 12:19:01 |DEBU| RunCommand command="git status --untracked-files=all --porcelain -z --find-renames=50%"
Oct 10 12:19:01 |INFO| git rev-parse --abbrev-ref --verify HEAD (8.756709ms)
Oct 10 12:19:01 |DEBU| RunCommand command="git merge-base master master@{u}"
Oct 10 12:19:01 |DEBU| RunCommand command="git merge-base HEAD refs/remotes/origin/master"
Oct 10 12:19:01 |INFO| postRefreshUpdate for submodules took 42.833µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for files took 555.166µs
Oct 10 12:19:01 |INFO| git -C /Users/dmesa/.dotfiles rev-parse --path-format=absolute --absolute-git-dir (11.147625ms)
Oct 10 12:19:01 |INFO| postRefreshUpdate for worktrees took 351.125µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for localBranches took 67.333µs
Oct 10 12:19:01 |INFO| git status --untracked-files=all --porcelain -z --find-renames=50% (18.914208ms)
Oct 10 12:19:01 |INFO| refreshed files in 50.704334ms
Oct 10 12:19:01 |INFO| Refresh took 50.925917ms
Oct 10 12:19:01 |INFO| git merge-base master master@{u} (14.426416ms)
Oct 10 12:19:01 |INFO| git log HEAD --topo-order --oneline --pretty=format:%H%x00%at%x00%aN%x00%ae%x00%D%x00%p%x00%m%x00%s --abbrev=40 -300 --no-show-signature -- (13.981791ms)
Oct 10 12:19:01 |INFO| git merge-base HEAD refs/remotes/origin/master (13.676041ms)
Oct 10 12:19:01 |DEBU| using cache for key rebase.updateRefs
Oct 10 12:19:01 |INFO| postRefreshUpdate for commits took 305.542µs
Oct 10 12:19:01 |DEBU| using cache for key rebase.updateRefs
Oct 10 12:19:01 |DEBU| RunCommand command="git for-each-ref --sort=-committerdate --format=%(HEAD)%00%(refname:short)%00%(upstream:short)%00%(upstream:track)%00%(push:track)%00%(subject)%00%(objectname)%00%(committerdate:unix) refs/heads"
Oct 10 12:19:01 |INFO| postRefreshUpdate for submodules took 46.375µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for files took 369.875µs
Oct 10 12:19:01 |INFO| git for-each-ref --sort=-committerdate --format=%(HEAD)%00%(refname:short)%00%(upstream:short)%00%(upstream:track)%00%(push:track)%00%(subject)%00%(objectname)%00%(committerdate:unix) refs/heads (8.750791ms)
Oct 10 12:19:01 |DEBU| RunCommand command="git worktree list --porcelain"
Oct 10 12:19:01 |INFO| git worktree list --porcelain (4.936083ms)
Oct 10 12:19:01 |DEBU| RunCommand command="git -C /Users/dmesa/.dotfiles rev-parse --path-format=absolute --absolute-git-dir"
Oct 10 12:19:01 |INFO| git -C /Users/dmesa/.dotfiles rev-parse --path-format=absolute --absolute-git-dir (4.649542ms)
Oct 10 12:19:01 |INFO| postRefreshUpdate for worktrees took 29.875µs
Oct 10 12:19:01 |INFO| postRefreshUpdate for localBranches took 56.583µs
Oct 10 12:19:01 |DEBU| using cache for key rebase.updateRefs
Oct 10 12:19:04 |INFO| Heap memory in use: 5.0 MB
Oct 10 12:19:04 |INFO| refreshing the following scopes in sync mode: files
Oct 10 12:19:04 |INFO| refreshed merge conflicts in 432.958µs
Oct 10 12:19:04 |DEBU| using cache for key status.showUntrackedFiles
Oct 10 12:19:04 |DEBU| RunCommand command="git status --untracked-files=all --porcelain -z --find-renames=50%"
```

Am I reading this log correctly that some git operations took 9s? 18s? etc?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.