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

Re: git status became very slow after upgrading git

From
Vijay Raghavan Aravamudhan <avijayr@gmail.com>
Date
Feb 10, 2024, 18:42 UTC
Message-ID
<CAK7MZG29+Cy-7SJnWayro_5GGEe3iZLysQqVaATLz8GLtEtA5A@mail.gmail.com>
In-Reply-To
<m05xyw9r92.fsf@epic96565.epic.com>

Thanks for responding. I have run the command that you gave on an open source repo so that its easy for you to replicate. The remote url is: https://github.com/vraravam/ferdium-app

The output is:
    ~/d/o/ferdium  on   develop  GIT_TRACE=1 GIT_TRACE_SETUP=1
GIT_TRACE_PERFORMANCE=1 git status
00:08:15.548976 trace.c:314             setup: git_dir: .git
00:08:15.550590 trace.c:315             setup: git_common_dir: .git
00:08:15.550600 trace.c:316             setup: worktree:
/Users/vijay/dev/oss/ferdium
00:08:15.550604 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium
00:08:15.550611 trace.c:318             setup: prefix: (null)
00:08:15.550707 chdir-notify.c:70       setup: chdir from
'/Users/vijay/dev/oss/ferdium' to '/Users/vijay/dev/oss/ferdium'
00:08:15.550723 git.c:463               trace: built-in: git status
00:08:15.552184 read-cache.c:2386       performance: 0.000183000 s:
read cache .git/index
00:08:15.555964 read-cache.c:1629       performance: 0.003696000 s:
refresh index
00:08:15.556442 diff-lib.c:273          performance: 0.000132000 s:  diff-files
00:08:15.558558 unpack-trees.c:2004     performance: 0.000019000 s:
traverse_trees
00:08:15.558801 unpack-trees.c:438      performance: 0.000003000 s:
check_updates
00:08:15.558813 unpack-trees.c:2096     performance: 0.000394000 s:
unpack_trees
00:08:15.558819 diff-lib.c:638          performance: 0.000524000 s:  diff-index
00:08:15.559166 name-hash.c:613         performance: 0.000148000 s:
initialize name hash
On branch develop
Your branch is up to date with 'origin/develop'.

00:08:15.567249 run-command.c:657 trace: run_command: GIT_INDEX_FILE=.git/index git submodule summary --cached --for-status --summary-limit -1 HEAD 00:08:15.833334 git.c:749 trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD 00:08:15.834114 run-command.c:657 trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD 00:08:16.880778 trace.c:414 performance: 0.000013000 s: git command: git --exec-path 00:08:18.216639 git.c:463 trace: built-in: git rev-parse --git-dir 00:08:18.218740 trace.c:414 performance: 0.002132000 s: git command: git rev-parse --git-dir 00:08:18.489025 git.c:463 trace: built-in: git rev-parse --git-path objects 00:08:18.490677 trace.c:414 performance: 0.001675000 s: git command: git rev-parse --git-path objects 00:08:19.031080 git.c:463 trace: built-in: git rev-parse --show-prefix 00:08:19.032882 trace.c:414 performance: 0.001827000 s: git command: git rev-parse --show-prefix 00:08:19.296074 git.c:463 trace: built-in: git rev-parse --show-toplevel 00:08:19.297559 trace.c:414 performance: 0.001504000 s: git command: git rev-parse --show-toplevel 00:08:19.830285 trace.c:314 setup: git_dir: .git 00:08:19.830972 trace.c:315 setup: git_common_dir: .git 00:08:19.830981 trace.c:316 setup: worktree: /Users/vijay/dev/oss/ferdium 00:08:19.830984 trace.c:317 setup: cwd: /Users/vijay/dev/oss/ferdium 00:08:19.830990 trace.c:318 setup: prefix: (null) 00:08:19.830994 git.c:463 trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD 00:08:19.834629 read-cache.c:2386 performance: 0.000164000 s: read cache .git/index 00:08:19.834914 unpack-trees.c:2004 performance: 0.000024000 s: traverse_trees 00:08:19.834932 unpack-trees.c:438 performance: 0.000003000 s: check_updates 00:08:19.834940 unpack-trees.c:2096 performance: 0.000157000 s: unpack_trees 00:08:19.834958 diff-lib.c:638 performance: 0.000307000 s: diff-index 00:08:19.834975 trace.c:414 performance: 0.005922000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD 00:08:19.836137 trace.c:414 performance: 4.003693000 s: git command: /opt/homebrew/opt/git/libexec/git-core/git submodule summary --cached --for-status --summary-limit -1 HEAD 00:08:19.836842 run-command.c:657 trace: run_command: GIT_INDEX_FILE=.git/index git submodule summary --files --for-status --summary-limit -1 00:08:20.106802 git.c:749 trace: exec: git-submodule summary --files --for-status --summary-limit -1 00:08:20.107638 run-command.c:657 trace: run_command: git-submodule summary --files --for-status --summary-limit -1 00:08:21.162243 trace.c:414 performance: 0.000006000 s: git command: git --exec-path 00:08:22.496146 git.c:463 trace: built-in: git rev-parse --git-dir 00:08:22.497722 trace.c:414 performance: 0.001589000 s: git command: git rev-parse --git-dir 00:08:22.764795 git.c:463 trace: built-in: git rev-parse --git-path objects 00:08:22.766763 trace.c:414 performance: 0.001991000 s: git command: git rev-parse --git-path objects 00:08:23.304626 git.c:463 trace: built-in: git rev-parse --show-prefix 00:08:23.306436 trace.c:414 performance: 0.001833000 s: git command: git rev-parse --show-prefix 00:08:23.575506 git.c:463 trace: built-in: git rev-parse --show-toplevel 00:08:23.577138 trace.c:414 performance: 0.001656000 s: git command: git rev-parse --show-toplevel 00:08:24.111335 trace.c:314 setup: git_dir: .git 00:08:24.112123 trace.c:315 setup: git_common_dir: .git 00:08:24.112138 trace.c:316 setup: worktree: /Users/vijay/dev/oss/ferdium 00:08:24.112142 trace.c:317 setup: cwd: /Users/vijay/dev/oss/ferdium 00:08:24.112149 trace.c:318 setup: prefix: (null) 00:08:24.112154 git.c:463 trace: built-in: git submodule--helper summary --files --for-status -n -1 -- 00:08:24.113679 read-cache.c:2386 performance: 0.000216000 s: read cache .git/index 00:08:24.117811 diff-lib.c:273 performance: 0.004115000 s: diff-files 00:08:24.117838 trace.c:414 performance: 0.007389000 s: git command: git submodule--helper summary --files --for-status -n -1 -- 00:08:24.118895 trace.c:414 performance: 4.013083000 s: git command: /opt/homebrew/opt/git/libexec/git-core/git submodule summary --files --for-status --summary-limit -1 nothing to commit, working tree clean 00:08:24.119646 trace.c:414 performance: 8.571954000 s: git command: git status

Hope this helps. Also, I noticed that the same repo, same versions of all tools, etc - this issue only occurs on my M2 mac, but works without any slowness on the intel mac.

On Sat, Feb 10, 2024 at 10:43 PM Sean Allred <allred.sean@gmail.com> wrote:
Show 34 quoted lines
>
>
> Vijay Raghavan Aravamudhan <avijayr@gmail.com> writes:
>
> > What did you do before the bug happened? (Steps to reproduce your issue)
> > 1. brew update which pulled in latest version of git
> > 2. git status in a repository (without submodules)
> >
> > What did you expect to happen? (Expected behavior)
> > git status should have been fast
> >
> > What happened instead? (Actual behavior)
> > git status takes almost 5s to complete.
>
> Thanks for the report. This isn't a whole lot of information to go on.
> At least, I'm not able to reproduce locally with a trivial repository:
>
>     git init
>     echo foo > file
>     git add file
>     git commit -mtest
>     git status
>
> If you're able to reproduce, can you re-run `git status` with tracing
> enabled and provide your output?
>
>     GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status
>
> If you can provide reproduction instructions that start with `git init`,
> that would also help. It may take some time for you, but it'll take less
> time than folks on this list taking shots in the dark :-)
>
> --
> Sean Allred
-- 
You can visit my Github Profile to get to know what I work on outside
of my day job
Previous: Sean AllredNext: Sean Allred
Message 3 of 5 in “git status became very slow after upgrading git”
  1. Vijay Raghavan AravamudhanFeb 10, 2024
  2. Sean AllredFeb 10, 2024
  3. Vijay Raghavan AravamudhanFeb 10, 2024
  4. Sean AllredFeb 10, 2024
  5. Vijay Raghavan AravamudhanFeb 10, 2024

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.