public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
* git status became very slow after upgrading git
@ 2024-02-10  4:49 Vijay Raghavan Aravamudhan
  2024-02-10 17:06 ` Sean Allred
  0 siblings, 1 reply; 5+ messages in thread
From: Vijay Raghavan Aravamudhan @ 2024-02-10  4:49 UTC (permalink / raw)
  To: git

Thank you for filling out a Git bug report!
Please answer the following questions to help us understand your issue.

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.

What's different between what you expected and what actually happened?
Time for the status reporting

Anything else you want to add:
i have the `status.submoduleSummary` set to `true` in my global git config

Please review the rest of the bug report below.
You can delete any lines you don't wish to share.


[System Info]
git version:
git version 2.43.1
cpu: arm64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
uname: Darwin 23.4.0 Darwin Kernel Version 23.4.0: Sat Jan 27 14:29:57
PST 2024; root:xnu-10063.100.633~14/RELEASE_ARM64_T8112 arm64
compiler info: clang: 15.0.0 (clang-1500.1.0.2.5)
libc info: no libc information available
$SHELL (typically, interactive shell): /bin/zsh


[Enabled Hooks]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: git status became very slow after upgrading git
  2024-02-10  4:49 git status became very slow after upgrading git Vijay Raghavan Aravamudhan
@ 2024-02-10 17:06 ` Sean Allred
  2024-02-10 18:42   ` Vijay Raghavan Aravamudhan
  0 siblings, 1 reply; 5+ messages in thread
From: Sean Allred @ 2024-02-10 17:06 UTC (permalink / raw)
  To: Vijay Raghavan Aravamudhan; +Cc: git


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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: git status became very slow after upgrading git
  2024-02-10 17:06 ` Sean Allred
@ 2024-02-10 18:42   ` Vijay Raghavan Aravamudhan
  2024-02-10 19:06     ` Sean Allred
  0 siblings, 1 reply; 5+ messages in thread
From: Vijay Raghavan Aravamudhan @ 2024-02-10 18:42 UTC (permalink / raw)
  To: Sean Allred; +Cc: git

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:
>
>
> 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: git status became very slow after upgrading git
  2024-02-10 18:42   ` Vijay Raghavan Aravamudhan
@ 2024-02-10 19:06     ` Sean Allred
  2024-02-10 19:57       ` Vijay Raghavan Aravamudhan
  0 siblings, 1 reply; 5+ messages in thread
From: Sean Allred @ 2024-02-10 19:06 UTC (permalink / raw)
  To: Vijay Raghavan Aravamudhan; +Cc: Sean Allred, git


Vijay Raghavan Aravamudhan <avijayr@gmail.com> writes:

> 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:
>
>         [[ I took the liberty of cleaning this up; ]]
>         [[ let's hope formatting is preserved now. ]]
>
> ferdium-app.git: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.

Thanks, that info does help. It at least narrows it down to these two
subprocesses:

    git submodule--helper summary --cached --for-status -n -1 -- HEAD
    git submodule--helper summary --files --for-status -n -1 --

Unfortunately, I'm still not able to reproduce on my M2 (even with that
config set globally), so I wonder if there's something else at play.
I've probably reached the end of my usefulness (since the problem does
appear to be specific to submodules and cmd_submodule__helper seems to
be lacking documentation), but you might consider replying with your
output of

    git config --list --show-scope

after stripping any private information, of course.

I'll provide my info down below in the hopes that it's useful for
comparison by someone who knows more about this subsystem. It's worth
noting that I'm running the same submodule--helper command and it's
completing in a reasonable timeframe for me.

Configuration:

    ferdium-app.git:develop$ git --no-pager config --list --show-scope
    system	credential.helper=osxkeychain
    system	filter.lfs.clean=git-lfs clean -- %f
    system	filter.lfs.smudge=git-lfs smudge -- %f
    system	filter.lfs.process=git-lfs filter-process
    system	filter.lfs.required=true
    global	user.signingkey=/Users/sallred/.ssh/id_ed25519.pub
    global	pull.rebase=true
    global	push.default=current
    global	core.editor=mg
    global	core.excludesfile=/Users/sallred/.gitignore
    global	core.fsmonitor=true
    global	core.whitespace=trailing-space
    global	init.defaultbranch=main
    global	remote.pushdefault=origin
    global	branch.autosetupmerge=true
    global	rerere.enabled=true
    global	gpg.format=ssh
    global	maintenance.repo=/Users/sallred/a
    global	maintenance.repo=/Users/sallred/b
    global	maintenance.repo=/Users/sallred/c
    global	maintenance.repo=/Users/sallred/d
    global	commit.gpgsign=true
    global	diff.wserrorhighlight=old,new
    global	gpg.ssh.allowedsignersfile=/Users/sallred/.ssh/allowed_signers
    global	remote.origin.fetch=+refs/notes/*:refs/notes/*
    global	status.submodulesummary=true
    local	core.repositoryformatversion=0
    local	core.filemode=true
    local	core.bare=false
    local	core.logallrefupdates=true
    local	core.ignorecase=true
    local	core.precomposeunicode=true
    local	remote.origin.url=git@github.com:vraravam/ferdium-app
    local	remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
    local	branch.develop.remote=origin
    local	branch.develop.merge=refs/heads/develop

Performance data:

    ferdium-app.git:develop$ GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status
    13:29:32.879597 trace.c:314             setup: git_dir: .git
    13:29:32.880020 trace.c:315             setup: git_common_dir: .git
    13:29:32.880026 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app
    13:29:32.880029 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app
    13:29:32.880033 trace.c:318             setup: prefix: (null)
    13:29:32.880071 chdir-notify.c:70       setup: chdir from '/Users/sallred/tmp/ferdium-app' to '/Users/sallred/tmp/ferdium-app'
    13:29:32.880078 git.c:463               trace: built-in: git status
    13:29:32.880606 read-cache.c:2386       performance: 0.000118000 s:  read cache .git/index
    13:29:32.904888 read-cache.c:1629       performance: 0.000082000 s:  refresh index
    13:29:32.905983 diff-lib.c:273          performance: 0.000287000 s:  diff-files
    13:29:32.907393 unpack-trees.c:2004     performance: 0.000014000 s:    traverse_trees
    13:29:32.907403 unpack-trees.c:438      performance: 0.000002000 s:    check_updates
    13:29:32.907407 unpack-trees.c:2096     performance: 0.000109000 s:   unpack_trees
    13:29:32.907410 diff-lib.c:638          performance: 0.000163000 s:  diff-index
    13:29:32.907681 name-hash.c:613         performance: 0.000107000 s:  initialize name hash
    13:29:32.922245 run-command.c:657       trace: run_command: GIT_INDEX_FILE=.git/index git submodule summary --cached --for-status --summary-limit -1 HEAD
    On branch develop
    Your branch is up to date with 'origin/develop'.

    13:29:32.928117 git.c:749               trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD
    13:29:32.928715 run-command.c:657       trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD
    13:29:32.941067 trace.c:414             performance: 0.000002000 s: git command: git --exec-path
    13:29:32.961582 git.c:463               trace: built-in: git rev-parse --git-dir
    13:29:32.962376 trace.c:414             performance: 0.000802000 s: git command: git rev-parse --git-dir
    13:29:32.966772 git.c:463               trace: built-in: git rev-parse --git-path objects
    13:29:32.967437 trace.c:414             performance: 0.000673000 s: git command: git rev-parse --git-path objects
    13:29:32.976243 git.c:463               trace: built-in: git rev-parse --show-prefix
    13:29:32.976902 trace.c:414             performance: 0.000667000 s: git command: git rev-parse --show-prefix
    13:29:32.981157 git.c:463               trace: built-in: git rev-parse --show-toplevel
    13:29:32.981835 trace.c:414             performance: 0.000690000 s: git command: git rev-parse --show-toplevel
    13:29:32.989790 trace.c:314             setup: git_dir: .git
    13:29:32.990234 trace.c:315             setup: git_common_dir: .git
    13:29:32.990238 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app
    13:29:32.990242 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app
    13:29:32.990245 trace.c:318             setup: prefix: (null)
    13:29:32.990246 git.c:463               trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD
    13:29:32.991301 read-cache.c:2386       performance: 0.000062000 s:  read cache .git/index
    13:29:33.002570 unpack-trees.c:2004     performance: 0.000009000 s:    traverse_trees
    13:29:33.002577 unpack-trees.c:438      performance: 0.000001000 s:    check_updates
    13:29:33.002580 unpack-trees.c:2096     performance: 0.000074000 s:   unpack_trees
    13:29:33.002585 diff-lib.c:638          performance: 0.000117000 s:  diff-index
    13:29:33.002591 trace.c:414             performance: 0.013037000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD
    13:29:33.003099 trace.c:414             performance: 0.075293000 s: git command: /opt/homebrew/opt/git/libexec/git-core/git submodule summary --cached --for-status --summary-limit -1 HEAD
    13:29:33.003446 run-command.c:657       trace: run_command: GIT_INDEX_FILE=.git/index git submodule summary --files --for-status --summary-limit -1
    13:29:33.007530 git.c:749               trace: exec: git-submodule summary --files --for-status --summary-limit -1
    13:29:33.007926 run-command.c:657       trace: run_command: git-submodule summary --files --for-status --summary-limit -1
    13:29:33.017316 trace.c:414             performance: 0.000002000 s: git command: git --exec-path
    13:29:33.036544 git.c:463               trace: built-in: git rev-parse --git-dir
    13:29:33.037494 trace.c:414             performance: 0.000959000 s: git command: git rev-parse --git-dir
    13:29:33.041936 git.c:463               trace: built-in: git rev-parse --git-path objects
    13:29:33.042731 trace.c:414             performance: 0.000803000 s: git command: git rev-parse --git-path objects
    13:29:33.051651 git.c:463               trace: built-in: git rev-parse --show-prefix
    13:29:33.052320 trace.c:414             performance: 0.000678000 s: git command: git rev-parse --show-prefix
    13:29:33.056260 git.c:463               trace: built-in: git rev-parse --show-toplevel
    13:29:33.057043 trace.c:414             performance: 0.000793000 s: git command: git rev-parse --show-toplevel
    13:29:33.064488 trace.c:314             setup: git_dir: .git
    13:29:33.064860 trace.c:315             setup: git_common_dir: .git
    13:29:33.064862 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app
    13:29:33.064863 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app
    13:29:33.064866 trace.c:318             setup: prefix: (null)
    13:29:33.064867 git.c:463               trace: built-in: git submodule--helper summary --files --for-status -n -1 --
    13:29:33.065421 read-cache.c:2386       performance: 0.000085000 s:  read cache .git/index
    13:29:33.079310 diff-lib.c:273          performance: 0.000026000 s:  diff-files
    13:29:33.079330 trace.c:414             performance: 0.015094000 s: git command: git submodule--helper summary --files --for-status -n -1 --
    13:29:33.079947 trace.c:414             performance: 0.072649000 s: git command: /opt/homebrew/opt/git/libexec/git-core/git submodule summary --files --for-status --summary-limit -1
    13:29:33.080290 trace.c:414             performance: 0.201218000 s: git command: git status
    nothing to commit, working tree clean

--
Sean Allred

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: git status became very slow after upgrading git
  2024-02-10 19:06     ` Sean Allred
@ 2024-02-10 19:57       ` Vijay Raghavan Aravamudhan
  0 siblings, 0 replies; 5+ messages in thread
From: Vijay Raghavan Aravamudhan @ 2024-02-10 19:57 UTC (permalink / raw)
  To: Sean Allred; +Cc: git

Thanks for the quick response!
Here's the data requested:
system credential.helper=osxkeychain
global includeif.gitdir/i:~/.path=~/.gitconfig-oss.inc
global advice.detachedhead=true
global alias.dangling=fsck --no-reflog
global alias.ec=config --global -e
global alias.f=!git ls-files | grep -i
global alias.sci=!sh -c ' if $(git st | grep -q "have diverged"); then
echo "Diverged branches: aborting"; exit 1; elif ! $(git st | grep -q
"to unstage"); then echo "Nothing to commit: aborting"; else if $(git
st | grep -q "is ahead of"); then echo "Amending existing commit"; git
amq; else echo "Creating new commit"; echo $0; git ci "$0"; fi fi'
global alias.what=show -s --pretty='tformat:%h (%s, %ad)' --date=short
global alias.who=shortlog -s --
global alias.whois=log -i -1 --pretty=format:'%an <%ae>' --author
global alias.standup=log --since 1.week.ago --author
global alias.lg=log --color --graph
--pretty=format:'%C(yellow)%h%Creset -%C(bold blue)%d%Creset %s
%C(green) %an, %cr%Creset' --abbrev-commit
global alias.lga=log --color --graph --all
--pretty=format:'%C(yellow)%h%Creset -%C(bold blue)%d%Creset %s
%C(green) %an, %cr%Creset' --abbrev-commit
global alias.ll=log --decorate --graph --oneline --abbrev-commit
global alias.mn=merge --no-commit
global alias.cn=cherry-pick --no-commit
global alias.cr=cherry-pick
global alias.ci=commit -m
global alias.co=checkout
global alias.cl=clone
global alias.st=!git status --ahead-behind && git submodule summary
global alias.sts=status -sb
global alias.b=branch
global alias.d=diff
global alias.dc=diff --staged
global alias.undo=reset --soft HEAD^
global alias.wipe=!git add -A && git commit -qm 'WIPE SAVEPOINT if
needed later, can be resurrected using reflog' && git reset HEAD~1
--hard
global alias.amend=commit --amend --date=now
global alias.amq=amend --no-edit --quiet
global alias.unstage=restore --staged
global alias.large=!git ls-tree -r -t -l --full-name HEAD | sort -n -k
4 | tail -n 10
global alias.untrack=rm -rf --cached --
global alias.grep=grep -Ii
global alias.patch=!git --no-pager diff --no-color
global alias.track=rev-parse --abbrev-ref --symbolic-full-name @{u}
global alias.fo=!git fetch --all --tags && git dlb
global alias.repo=!basename `git remote get-url origin`
global alias.br=branch --show-current
global alias.upreb=!git branch -u origin/`git br` && git fo && ( git
remote | grep upstream 2>&1 >/dev/null ) && git rebase upstream/`git
br` --no-verify && git fetch upstream --tags && git push --no-verify
&& git push --tags --no-verify && git siu && git dlb
global alias.rpo=remote prune origin
global alias.in=log --reverse ..@{u} --stat --no-merges
global alias.inp=log -p --reverse ..@{u} --no-merges
global alias.inc=!git diff ..@{u}
global alias.new=!sh -c 'git log $1@{1}..$1@{0} $@'
global alias.ghpg-trim=!r() { days=${1:-19}; echo "Will clean beyond
$days days" && git checkout gh-pages && echo "Size before: $(du -sh
*reports)" && DIRECTORIES=$(find *-reports -mindepth 1 -maxdepth 1
-type d); for dir in ${DIRECTORIES}; do SHA_FROM_DIR="$(basename
$dir)"; COMMIT_DATE_IN_MILLIS=$(git show -s --format=%ct $SHA_FROM_DIR
2> /dev/null || echo 5000000000); COMMIT_DATE_IN_DAYS=$(echo
"$COMMIT_DATE_IN_MILLIS / (1000 * 60 * 60 * 24)" | bc -l); ((
${COMMIT_DATE_IN_DAYS%.*} > ${days%.*} )) && git rm -rf $dir; done;
git commit -m "Deleting reports older than $days days" && echo $(git
rev-parse HEAD) > .git/info/grafts && git config
advice.graftFileDeprecated false && FILTER_BRANCH_SQUELCH_WARNING=1
git filter-branch -f -- --all; rm -f .git/info/grafts; echo "Size
after: $(du -sh *reports)" done;}; r
global alias.out=log --reverse @{u}..
global alias.outp=log -p --reverse @{u}..
global alias.g=grep --break --heading --line-number
global alias.sf=submodule foreach
global alias.rfc=reflog expire --expire=now
global alias.cc=!echo "Size before: $(du -sh .git | cut -f1)"; git
remote prune origin; git repack; git prune-packed; git reflog expire
--all --expire=1.week.ago; git maintenance run --task=gc; echo "Size
after: $(du -sh .git | cut -f1)";
global alias.big=!git rev-list --objects --all | grep "$(git
verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -100 |
awk '{print $1}')"
global alias.dlb=!git branch -vv | GREP_OPTIONS= grep ': gone]' | awk
'{print $1}' | xargs -I {} git branch -D {}
global alias.old=!sh -c '[[ "`git log $0/$1 --since 10.days -1 | wc
-l`" -eq 0 ]] && echo "Will need to delete $0/$1"'
global alias.recentb=!r() { refbranch=$1 count=$2; git for-each-ref
--sort=-committerdate refs/remotes
--format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold
green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)'
--color=always --count=${count:-20} | while read line; do
branch=$(echo "$line" | awk 'BEGIN { FS = "|" }; { print $1 }' | tr -d
'*'); ahead=$(git rev-list --count
"${refbranch:-origin/master}..${branch}"); behind=$(git rev-list
--count "${branch}..${refbranch:-origin/master}"); colorline=$(echo
"$line" | sed 's/^[^|]*|//'); echo "$ahead|$behind|$colorline" | awk
-F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; done | ( echo
"ahead|behind||branch|lastcommit|message|author\n" && cat) | column
-ts'|';}; r
global alias.oldestb=!r() { refbranch=$1 count=$2; git for-each-ref
--sort=committerdate refs/remotes
--format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold
green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)'
--color=always --count=${count:-20} | while read line; do
branch=$(echo "$line" | awk 'BEGIN { FS = "|" }; { print $1 }' | tr -d
'*'); ahead=$(git rev-list --count
"${refbranch:-origin/master}..${branch}"); behind=$(git rev-list
--count "${branch}..${refbranch:-origin/master}"); colorline=$(echo
"$line" | sed 's/^[^|]*|//'); echo "$ahead|$behind|$colorline" | awk
-F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; done | ( echo
"ahead|behind||branch|lastcommit|message|author\n" && cat) | column
-ts'|';}; r
global alias.lc=!git branch -r --sort=-committerdate
--format="%(color:magenta)%(committerdate:relative)%(color:reset)
%(color:bold cyan)%(refname:short)%(color:reset) %(contents:subject)
%(color:bold blue) <%(authorname)> %(color:reset)"
global alias.lc2=!git branch -r --sort=-committerdate | egrep -v
'HEAD|master|main' | while read b; do git log --since 4.days --color
--format="%ci _%C(magenta)%cr %C(bold cyan)$b%Creset %s %C(bold
blue)<%an>%Creset" $b | head -n 1; done | sort -r | cut -d_ -f2-
global alias.se=!git rev-list --all | xargs git grep -F
global alias.siu=!git submodule update --init --recursive --remote
--rebase --force
global alias.pushsub=sf git push
global alias.pullsub=sf git pull
global alias.dcolor=diff --color-words
global branch.autosetupmerge=true
global branch.autosetuprebase=always
global branch.sort=committerdate
global checkout.defaultremote=origin
global checkout.workers=0
global color.diff.meta=yellow
global color.diff.frag=magenta bold
global color.diff.func=146 bold
global color.diff.commit=yellow bold
global color.diff.old=red bold
global color.diff.new=green bold
global color.diff.whitespace=red reverse
global core.pager=diff-so-fancy | less --tabs=2 -RFX
global core.editor=codium --wait
global core.autocrlf=input
global core.excludesfile=~/.gitignore_global
global core.commentchar=*
global core.whitespace=fix
global diff.compactionheuristic=true
global diff.renames=true
global diff.renamelimit=1000
global diff.colormoved=default
global diff.submodule=diff
global diff-so-fancy.markemptylines=false
global fetch.prune=true
global fetch.prunetags=true
global fetch.parallel=0
global fetch.showforcedupdates=true
global filter.lfs.required=true
global filter.lfs.clean=git-lfs clean -- %f
global filter.lfs.smudge=git-lfs smudge -- %f
global filter.lfs.process=git-lfs filter-process
global gc.auto=2000
global gc.pruneexpire=now
global gc.worktreepruneexpire=1.weeks.ago
global gc.reflogexpire=2.weeks.ago
global gc.reflogexpireunreachable=2.weeks.ago
global gc.rerereresolved=1.weeks.ago
global grep.column=true
global grep.extendedregexp=true
global grep.linenumber=true
global grep.fullname=true
global gui.pruneduringfetch=true
global gui.matchtrackingbranch=true
global gui.warndetachedcommit=true
global gui.tabsize=2
global help.autocorrect=1
global interactive.difffilter=diff-so-fancy --patch
global merge.defaulttoupstream=true
global merge.ff=only
global merge.renamelimit=15000
global merge.autostash=true
global pack.threads=0
global pack.writereverseindex=true
global pager.diff=diff-so-fancy | less --tabs=2 -RFX
global pull.rebase=true
global pull.autostash=true
global push.default=upstream
global push.followtags=true
global push.recursesubmodules=check
global rebase.autosquash=true
global rebase.autostash=true
global rebase.missingcommitscheck=error
global rebase.abbreviatecommands=true
global rerere.enabled=true
global rerere.autoupdate=true
global stash.untracked=true
global stash.showincludeuntracked=true
global stash.showpatch=true
global status.showstash=true
global submodule.fetchjobs=0
global tag.sort=version:refname
global transfer.fsckobjects=false
global http.postbuffer=786432000
global user.useconfigonly=true
global add.interactive.usebuiltin=false
global init.defaultbranch=master
local core.repositoryformatversion=0
local core.filemode=true
local core.bare=false
local core.logallrefupdates=true
local core.ignorecase=true
local core.precomposeunicode=true
local core.hookspath=.husky
local remote.origin.url=git@github.com:vraravam/ferdium-app
local remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
local branch.develop.remote=origin
local branch.develop.rebase=true
local branch.develop.merge=refs/heads/develop
local remote.upstream.url=git@github.com:ferdium/ferdium-app
local remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
local submodule.recipes.active=true
local submodule.recipes.url=https://github.com/ferdium/ferdium-recipes.git
local branch.nightly.remote=origin
local branch.nightly.rebase=true
local branch.nightly.merge=refs/heads/nightly
local branch.release.remote=origin
local branch.release.rebase=true
local branch.release.merge=refs/heads/release
local gui.wmstate=normal
local gui.geometry=1381x921+5+48 201 203

On Sun, Feb 11, 2024 at 1:03 AM Sean Allred <allred.sean@gmail.com> wrote:
>
>
> Vijay Raghavan Aravamudhan <avijayr@gmail.com> writes:
>
> > 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:
> >
> >         [[ I took the liberty of cleaning this up; ]]
> >         [[ let's hope formatting is preserved now. ]]
> >
> > ferdium-app.git: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.
>
> Thanks, that info does help. It at least narrows it down to these two
> subprocesses:
>
>     git submodule--helper summary --cached --for-status -n -1 -- HEAD
>     git submodule--helper summary --files --for-status -n -1 --
>
> Unfortunately, I'm still not able to reproduce on my M2 (even with that
> config set globally), so I wonder if there's something else at play.
> I've probably reached the end of my usefulness (since the problem does
> appear to be specific to submodules and cmd_submodule__helper seems to
> be lacking documentation), but you might consider replying with your
> output of
>
>     git config --list --show-scope
>
> after stripping any private information, of course.
>
> I'll provide my info down below in the hopes that it's useful for
> comparison by someone who knows more about this subsystem. It's worth
> noting that I'm running the same submodule--helper command and it's
> completing in a reasonable timeframe for me.
>
> Configuration:
>
>     ferdium-app.git:develop$ git --no-pager config --list --show-scope
>     system      credential.helper=osxkeychain
>     system      filter.lfs.clean=git-lfs clean -- %f
>     system      filter.lfs.smudge=git-lfs smudge -- %f
>     system      filter.lfs.process=git-lfs filter-process
>     system      filter.lfs.required=true
>     global      user.signingkey=/Users/sallred/.ssh/id_ed25519.pub
>     global      pull.rebase=true
>     global      push.default=current
>     global      core.editor=mg
>     global      core.excludesfile=/Users/sallred/.gitignore
>     global      core.fsmonitor=true
>     global      core.whitespace=trailing-space
>     global      init.defaultbranch=main
>     global      remote.pushdefault=origin
>     global      branch.autosetupmerge=true
>     global      rerere.enabled=true
>     global      gpg.format=ssh
>     global      maintenance.repo=/Users/sallred/a
>     global      maintenance.repo=/Users/sallred/b
>     global      maintenance.repo=/Users/sallred/c
>     global      maintenance.repo=/Users/sallred/d
>     global      commit.gpgsign=true
>     global      diff.wserrorhighlight=old,new
>     global      gpg.ssh.allowedsignersfile=/Users/sallred/.ssh/allowed_signers
>     global      remote.origin.fetch=+refs/notes/*:refs/notes/*
>     global      status.submodulesummary=true
>     local       core.repositoryformatversion=0
>     local       core.filemode=true
>     local       core.bare=false
>     local       core.logallrefupdates=true
>     local       core.ignorecase=true
>     local       core.precomposeunicode=true
>     local       remote.origin.url=git@github.com:vraravam/ferdium-app
>     local       remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
>     local       branch.develop.remote=origin
>     local       branch.develop.merge=refs/heads/develop
>
> Performance data:
>
>     ferdium-app.git:develop$ GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status
>     13:29:32.879597 trace.c:314             setup: git_dir: .git
>     13:29:32.880020 trace.c:315             setup: git_common_dir: .git
>     13:29:32.880026 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app
>     13:29:32.880029 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app
>     13:29:32.880033 trace.c:318             setup: prefix: (null)
>     13:29:32.880071 chdir-notify.c:70       setup: chdir from '/Users/sallred/tmp/ferdium-app' to '/Users/sallred/tmp/ferdium-app'
>     13:29:32.880078 git.c:463               trace: built-in: git status
>     13:29:32.880606 read-cache.c:2386       performance: 0.000118000 s:  read cache .git/index
>     13:29:32.904888 read-cache.c:1629       performance: 0.000082000 s:  refresh index
>     13:29:32.905983 diff-lib.c:273          performance: 0.000287000 s:  diff-files
>     13:29:32.907393 unpack-trees.c:2004     performance: 0.000014000 s:    traverse_trees
>     13:29:32.907403 unpack-trees.c:438      performance: 0.000002000 s:    check_updates
>     13:29:32.907407 unpack-trees.c:2096     performance: 0.000109000 s:   unpack_trees
>     13:29:32.907410 diff-lib.c:638          performance: 0.000163000 s:  diff-index
>     13:29:32.907681 name-hash.c:613         performance: 0.000107000 s:  initialize name hash
>     13:29:32.922245 run-command.c:657       trace: run_command: GIT_INDEX_FILE=.git/index git submodule summary --cached --for-status --summary-limit -1 HEAD
>     On branch develop
>     Your branch is up to date with 'origin/develop'.
>
>     13:29:32.928117 git.c:749               trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD
>     13:29:32.928715 run-command.c:657       trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD
>     13:29:32.941067 trace.c:414             performance: 0.000002000 s: git command: git --exec-path
>     13:29:32.961582 git.c:463               trace: built-in: git rev-parse --git-dir
>     13:29:32.962376 trace.c:414             performance: 0.000802000 s: git command: git rev-parse --git-dir
>     13:29:32.966772 git.c:463               trace: built-in: git rev-parse --git-path objects
>     13:29:32.967437 trace.c:414             performance: 0.000673000 s: git command: git rev-parse --git-path objects
>     13:29:32.976243 git.c:463               trace: built-in: git rev-parse --show-prefix
>     13:29:32.976902 trace.c:414             performance: 0.000667000 s: git command: git rev-parse --show-prefix
>     13:29:32.981157 git.c:463               trace: built-in: git rev-parse --show-toplevel
>     13:29:32.981835 trace.c:414             performance: 0.000690000 s: git command: git rev-parse --show-toplevel
>     13:29:32.989790 trace.c:314             setup: git_dir: .git
>     13:29:32.990234 trace.c:315             setup: git_common_dir: .git
>     13:29:32.990238 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app
>     13:29:32.990242 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app
>     13:29:32.990245 trace.c:318             setup: prefix: (null)
>     13:29:32.990246 git.c:463               trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD
>     13:29:32.991301 read-cache.c:2386       performance: 0.000062000 s:  read cache .git/index
>     13:29:33.002570 unpack-trees.c:2004     performance: 0.000009000 s:    traverse_trees
>     13:29:33.002577 unpack-trees.c:438      performance: 0.000001000 s:    check_updates
>     13:29:33.002580 unpack-trees.c:2096     performance: 0.000074000 s:   unpack_trees
>     13:29:33.002585 diff-lib.c:638          performance: 0.000117000 s:  diff-index
>     13:29:33.002591 trace.c:414             performance: 0.013037000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD
>     13:29:33.003099 trace.c:414             performance: 0.075293000 s: git command: /opt/homebrew/opt/git/libexec/git-core/git submodule summary --cached --for-status --summary-limit -1 HEAD
>     13:29:33.003446 run-command.c:657       trace: run_command: GIT_INDEX_FILE=.git/index git submodule summary --files --for-status --summary-limit -1
>     13:29:33.007530 git.c:749               trace: exec: git-submodule summary --files --for-status --summary-limit -1
>     13:29:33.007926 run-command.c:657       trace: run_command: git-submodule summary --files --for-status --summary-limit -1
>     13:29:33.017316 trace.c:414             performance: 0.000002000 s: git command: git --exec-path
>     13:29:33.036544 git.c:463               trace: built-in: git rev-parse --git-dir
>     13:29:33.037494 trace.c:414             performance: 0.000959000 s: git command: git rev-parse --git-dir
>     13:29:33.041936 git.c:463               trace: built-in: git rev-parse --git-path objects
>     13:29:33.042731 trace.c:414             performance: 0.000803000 s: git command: git rev-parse --git-path objects
>     13:29:33.051651 git.c:463               trace: built-in: git rev-parse --show-prefix
>     13:29:33.052320 trace.c:414             performance: 0.000678000 s: git command: git rev-parse --show-prefix
>     13:29:33.056260 git.c:463               trace: built-in: git rev-parse --show-toplevel
>     13:29:33.057043 trace.c:414             performance: 0.000793000 s: git command: git rev-parse --show-toplevel
>     13:29:33.064488 trace.c:314             setup: git_dir: .git
>     13:29:33.064860 trace.c:315             setup: git_common_dir: .git
>     13:29:33.064862 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app
>     13:29:33.064863 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app
>     13:29:33.064866 trace.c:318             setup: prefix: (null)
>     13:29:33.064867 git.c:463               trace: built-in: git submodule--helper summary --files --for-status -n -1 --
>     13:29:33.065421 read-cache.c:2386       performance: 0.000085000 s:  read cache .git/index
>     13:29:33.079310 diff-lib.c:273          performance: 0.000026000 s:  diff-files
>     13:29:33.079330 trace.c:414             performance: 0.015094000 s: git command: git submodule--helper summary --files --for-status -n -1 --
>     13:29:33.079947 trace.c:414             performance: 0.072649000 s: git command: /opt/homebrew/opt/git/libexec/git-core/git submodule summary --files --for-status --summary-limit -1
>     13:29:33.080290 trace.c:414             performance: 0.201218000 s: git command: git status
>     nothing to commit, working tree clean
>
> --
> Sean Allred



-- 
You can visit my Github Profile to get to know what I work on outside
of my day job

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-10 19:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-10  4:49 git status became very slow after upgrading git Vijay Raghavan Aravamudhan
2024-02-10 17:06 ` Sean Allred
2024-02-10 18:42   ` Vijay Raghavan Aravamudhan
2024-02-10 19:06     ` Sean Allred
2024-02-10 19:57       ` Vijay Raghavan Aravamudhan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox