{"thread":{"id":"60890","subject":"git status became very slow after upgrading git","startedAt":"2024-02-10T04:49:14Z","lastAt":"2024-02-10T19:57:32Z","messageCount":5,"participants":["Vijay Raghavan Aravamudhan","Sean Allred"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"488330","messageId":"CAK7MZG1MeeS5QNPog9oS+MbdKpkDXu61eVOszsC20Q=ik+Ng=g@mail.gmail.com","threadId":"60890","inReplyTo":null,"subject":"git status became very slow after upgrading git","fromName":"Vijay Raghavan Aravamudhan","fromEmail":"avijayr@gmail.com","sentAt":"2024-02-10T04:49:00Z","receivedAt":"2024-02-10T04:49:14Z","isPatch":false,"sender":{"key":"avijayr@gmail.com","avatar":"https://gravatar.com/avatar/e406836d0925e2458d3a4f794bc2d4199c0c54049612c9557c68f20e47f519d6?d=mp&s=160"},"body":"Thank you for filling out a Git bug report!\nPlease answer the following questions to help us understand your issue.\n\nWhat did you do before the bug happened? (Steps to reproduce your issue)\n1. brew update which pulled in latest version of git\n2. git status in a repository (without submodules)\n\nWhat did you expect to happen? (Expected behavior)\ngit status should have been fast\n\nWhat happened instead? (Actual behavior)\ngit status takes almost 5s to complete.\n\nWhat's different between what you expected and what actually happened?\nTime for the status reporting\n\nAnything else you want to add:\ni have the `status.submoduleSummary` set to `true` in my global git config\n\nPlease review the rest of the bug report below.\nYou can delete any lines you don't wish to share.\n\n\n[System Info]\ngit version:\ngit version 2.43.1\ncpu: arm64\nno commit associated with this build\nsizeof-long: 8\nsizeof-size_t: 8\nshell-path: /bin/sh\nfeature: fsmonitor--daemon\nuname: Darwin 23.4.0 Darwin Kernel Version 23.4.0: Sat Jan 27 14:29:57\nPST 2024; root:xnu-10063.100.633~14/RELEASE_ARM64_T8112 arm64\ncompiler info: clang: 15.0.0 (clang-1500.1.0.2.5)\nlibc info: no libc information available\n$SHELL (typically, interactive shell): /bin/zsh\n\n\n[Enabled Hooks]\n"},{"id":"488355","messageId":"m05xyw9r92.fsf@epic96565.epic.com","threadId":"60890","inReplyTo":"CAK7MZG1MeeS5QNPog9oS+MbdKpkDXu61eVOszsC20Q=ik+Ng=g@mail.gmail.com","subject":"Re: git status became very slow after upgrading git","fromName":"Sean Allred","fromEmail":"allred.sean@gmail.com","sentAt":"2024-02-10T17:06:20Z","receivedAt":"2024-02-10T17:13:47Z","isPatch":false,"sender":{"key":"allred.sean@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2082195?v=4"},"body":"\nVijay Raghavan Aravamudhan <avijayr@gmail.com> writes:\n\n> What did you do before the bug happened? (Steps to reproduce your issue)\n> 1. brew update which pulled in latest version of git\n> 2. git status in a repository (without submodules)\n>\n> What did you expect to happen? (Expected behavior)\n> git status should have been fast\n>\n> What happened instead? (Actual behavior)\n> git status takes almost 5s to complete.\n\nThanks for the report. This isn't a whole lot of information to go on.\nAt least, I'm not able to reproduce locally with a trivial repository:\n\n    git init\n    echo foo > file\n    git add file\n    git commit -mtest\n    git status\n\nIf you're able to reproduce, can you re-run `git status` with tracing\nenabled and provide your output?\n\n    GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status\n\nIf you can provide reproduction instructions that start with `git init`,\nthat would also help. It may take some time for you, but it'll take less\ntime than folks on this list taking shots in the dark :-)\n\n--\nSean Allred\n"},{"id":"488368","messageId":"CAK7MZG29+Cy-7SJnWayro_5GGEe3iZLysQqVaATLz8GLtEtA5A@mail.gmail.com","threadId":"60890","inReplyTo":"m05xyw9r92.fsf@epic96565.epic.com","subject":"Re: git status became very slow after upgrading git","fromName":"Vijay Raghavan Aravamudhan","fromEmail":"avijayr@gmail.com","sentAt":"2024-02-10T18:42:32Z","receivedAt":"2024-02-10T18:42:46Z","isPatch":false,"sender":{"key":"avijayr@gmail.com","avatar":"https://gravatar.com/avatar/e406836d0925e2458d3a4f794bc2d4199c0c54049612c9557c68f20e47f519d6?d=mp&s=160"},"body":"Thanks for responding. I have run the command that you gave on an open\nsource repo so that its easy for you to replicate. The remote url is:\nhttps://github.com/vraravam/ferdium-app\n\nThe output is:\n    ~/d/o/ferdium  on   develop  GIT_TRACE=1 GIT_TRACE_SETUP=1\nGIT_TRACE_PERFORMANCE=1 git status\n00:08:15.548976 trace.c:314             setup: git_dir: .git\n00:08:15.550590 trace.c:315             setup: git_common_dir: .git\n00:08:15.550600 trace.c:316             setup: worktree:\n/Users/vijay/dev/oss/ferdium\n00:08:15.550604 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n00:08:15.550611 trace.c:318             setup: prefix: (null)\n00:08:15.550707 chdir-notify.c:70       setup: chdir from\n'/Users/vijay/dev/oss/ferdium' to '/Users/vijay/dev/oss/ferdium'\n00:08:15.550723 git.c:463               trace: built-in: git status\n00:08:15.552184 read-cache.c:2386       performance: 0.000183000 s:\nread cache .git/index\n00:08:15.555964 read-cache.c:1629       performance: 0.003696000 s:\nrefresh index\n00:08:15.556442 diff-lib.c:273          performance: 0.000132000 s:  diff-files\n00:08:15.558558 unpack-trees.c:2004     performance: 0.000019000 s:\ntraverse_trees\n00:08:15.558801 unpack-trees.c:438      performance: 0.000003000 s:\ncheck_updates\n00:08:15.558813 unpack-trees.c:2096     performance: 0.000394000 s:\nunpack_trees\n00:08:15.558819 diff-lib.c:638          performance: 0.000524000 s:  diff-index\n00:08:15.559166 name-hash.c:613         performance: 0.000148000 s:\ninitialize name hash\nOn branch develop\nYour branch is up to date with 'origin/develop'.\n\n00:08:15.567249 run-command.c:657       trace: run_command:\nGIT_INDEX_FILE=.git/index git submodule summary --cached --for-status\n--summary-limit -1 HEAD\n00:08:15.833334 git.c:749               trace: exec: git-submodule\nsummary --cached --for-status --summary-limit -1 HEAD\n00:08:15.834114 run-command.c:657       trace: run_command:\ngit-submodule summary --cached --for-status --summary-limit -1 HEAD\n00:08:16.880778 trace.c:414             performance: 0.000013000 s:\ngit command: git --exec-path\n00:08:18.216639 git.c:463               trace: built-in: git rev-parse --git-dir\n00:08:18.218740 trace.c:414             performance: 0.002132000 s:\ngit command: git rev-parse --git-dir\n00:08:18.489025 git.c:463               trace: built-in: git rev-parse\n--git-path objects\n00:08:18.490677 trace.c:414             performance: 0.001675000 s:\ngit command: git rev-parse --git-path objects\n00:08:19.031080 git.c:463               trace: built-in: git rev-parse\n--show-prefix\n00:08:19.032882 trace.c:414             performance: 0.001827000 s:\ngit command: git rev-parse --show-prefix\n00:08:19.296074 git.c:463               trace: built-in: git rev-parse\n--show-toplevel\n00:08:19.297559 trace.c:414             performance: 0.001504000 s:\ngit command: git rev-parse --show-toplevel\n00:08:19.830285 trace.c:314             setup: git_dir: .git\n00:08:19.830972 trace.c:315             setup: git_common_dir: .git\n00:08:19.830981 trace.c:316             setup: worktree:\n/Users/vijay/dev/oss/ferdium\n00:08:19.830984 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n00:08:19.830990 trace.c:318             setup: prefix: (null)\n00:08:19.830994 git.c:463               trace: built-in: git\nsubmodule--helper summary --cached --for-status -n -1 -- HEAD\n00:08:19.834629 read-cache.c:2386       performance: 0.000164000 s:\nread cache .git/index\n00:08:19.834914 unpack-trees.c:2004     performance: 0.000024000 s:\ntraverse_trees\n00:08:19.834932 unpack-trees.c:438      performance: 0.000003000 s:\ncheck_updates\n00:08:19.834940 unpack-trees.c:2096     performance: 0.000157000 s:\nunpack_trees\n00:08:19.834958 diff-lib.c:638          performance: 0.000307000 s:  diff-index\n00:08:19.834975 trace.c:414             performance: 0.005922000 s:\ngit command: git submodule--helper summary --cached --for-status -n -1\n-- HEAD\n00:08:19.836137 trace.c:414             performance: 4.003693000 s:\ngit command: /opt/homebrew/opt/git/libexec/git-core/git submodule\nsummary --cached --for-status --summary-limit -1 HEAD\n00:08:19.836842 run-command.c:657       trace: run_command:\nGIT_INDEX_FILE=.git/index git submodule summary --files --for-status\n--summary-limit -1\n00:08:20.106802 git.c:749               trace: exec: git-submodule\nsummary --files --for-status --summary-limit -1\n00:08:20.107638 run-command.c:657       trace: run_command:\ngit-submodule summary --files --for-status --summary-limit -1\n00:08:21.162243 trace.c:414             performance: 0.000006000 s:\ngit command: git --exec-path\n00:08:22.496146 git.c:463               trace: built-in: git rev-parse --git-dir\n00:08:22.497722 trace.c:414             performance: 0.001589000 s:\ngit command: git rev-parse --git-dir\n00:08:22.764795 git.c:463               trace: built-in: git rev-parse\n--git-path objects\n00:08:22.766763 trace.c:414             performance: 0.001991000 s:\ngit command: git rev-parse --git-path objects\n00:08:23.304626 git.c:463               trace: built-in: git rev-parse\n--show-prefix\n00:08:23.306436 trace.c:414             performance: 0.001833000 s:\ngit command: git rev-parse --show-prefix\n00:08:23.575506 git.c:463               trace: built-in: git rev-parse\n--show-toplevel\n00:08:23.577138 trace.c:414             performance: 0.001656000 s:\ngit command: git rev-parse --show-toplevel\n00:08:24.111335 trace.c:314             setup: git_dir: .git\n00:08:24.112123 trace.c:315             setup: git_common_dir: .git\n00:08:24.112138 trace.c:316             setup: worktree:\n/Users/vijay/dev/oss/ferdium\n00:08:24.112142 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n00:08:24.112149 trace.c:318             setup: prefix: (null)\n00:08:24.112154 git.c:463               trace: built-in: git\nsubmodule--helper summary --files --for-status -n -1 --\n00:08:24.113679 read-cache.c:2386       performance: 0.000216000 s:\nread cache .git/index\n00:08:24.117811 diff-lib.c:273          performance: 0.004115000 s:  diff-files\n00:08:24.117838 trace.c:414             performance: 0.007389000 s:\ngit command: git submodule--helper summary --files --for-status -n -1\n--\n00:08:24.118895 trace.c:414             performance: 4.013083000 s:\ngit command: /opt/homebrew/opt/git/libexec/git-core/git submodule\nsummary --files --for-status --summary-limit -1\nnothing to commit, working tree clean\n00:08:24.119646 trace.c:414             performance: 8.571954000 s:\ngit command: git status\n\nHope this helps. Also, I noticed that the same repo, same versions of\nall tools, etc - this issue only occurs on my M2 mac, but works\nwithout any slowness on the intel mac.\n\nOn Sat, Feb 10, 2024 at 10:43 PM Sean Allred <allred.sean@gmail.com> wrote:\n>\n>\n> Vijay Raghavan Aravamudhan <avijayr@gmail.com> writes:\n>\n> > What did you do before the bug happened? (Steps to reproduce your issue)\n> > 1. brew update which pulled in latest version of git\n> > 2. git status in a repository (without submodules)\n> >\n> > What did you expect to happen? (Expected behavior)\n> > git status should have been fast\n> >\n> > What happened instead? (Actual behavior)\n> > git status takes almost 5s to complete.\n>\n> Thanks for the report. This isn't a whole lot of information to go on.\n> At least, I'm not able to reproduce locally with a trivial repository:\n>\n>     git init\n>     echo foo > file\n>     git add file\n>     git commit -mtest\n>     git status\n>\n> If you're able to reproduce, can you re-run `git status` with tracing\n> enabled and provide your output?\n>\n>     GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status\n>\n> If you can provide reproduction instructions that start with `git init`,\n> that would also help. It may take some time for you, but it'll take less\n> time than folks on this list taking shots in the dark :-)\n>\n> --\n> Sean Allred\n\n\n\n-- \nYou can visit my Github Profile to get to know what I work on outside\nof my day job\n"},{"id":"488371","messageId":"m0o7co8688.fsf@epic96565.epic.com","threadId":"60890","inReplyTo":"CAK7MZG29+Cy-7SJnWayro_5GGEe3iZLysQqVaATLz8GLtEtA5A@mail.gmail.com","subject":"Re: git status became very slow after upgrading git","fromName":"Sean Allred","fromEmail":"allred.sean@gmail.com","sentAt":"2024-02-10T19:06:29Z","receivedAt":"2024-02-10T19:33:14Z","isPatch":false,"sender":{"key":"allred.sean@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2082195?v=4"},"body":"\nVijay Raghavan Aravamudhan <avijayr@gmail.com> writes:\n\n> Thanks for responding. I have run the command that you gave on an open\n> source repo so that its easy for you to replicate. The remote url is:\n> https://github.com/vraravam/ferdium-app\n>\n> The output is:\n>\n>         [[ I took the liberty of cleaning this up; ]]\n>         [[ let's hope formatting is preserved now. ]]\n>\n> ferdium-app.git:develop$ GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status\n> 00:08:15.548976 trace.c:314             setup: git_dir: .git\n> 00:08:15.550590 trace.c:315             setup: git_common_dir: .git\n> 00:08:15.550600 trace.c:316             setup: worktree: /Users/vijay/dev/oss/ferdium\n> 00:08:15.550604 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n> 00:08:15.550611 trace.c:318             setup: prefix: (null)\n> 00:08:15.550707 chdir-notify.c:70       setup: chdir from '/Users/vijay/dev/oss/ferdium' to '/Users/vijay/dev/oss/ferdium'\n> 00:08:15.550723 git.c:463               trace: built-in: git status\n> 00:08:15.552184 read-cache.c:2386       performance: 0.000183000 s: read cache .git/index\n> 00:08:15.555964 read-cache.c:1629       performance: 0.003696000 s: refresh index\n> 00:08:15.556442 diff-lib.c:273          performance: 0.000132000 s:  diff-files\n> 00:08:15.558558 unpack-trees.c:2004     performance: 0.000019000 s: traverse_trees\n> 00:08:15.558801 unpack-trees.c:438      performance: 0.000003000 s: check_updates\n> 00:08:15.558813 unpack-trees.c:2096     performance: 0.000394000 s: unpack_trees\n> 00:08:15.558819 diff-lib.c:638          performance: 0.000524000 s:  diff-index\n> 00:08:15.559166 name-hash.c:613         performance: 0.000148000 s: initialize name hash\n> On branch develop\n> Your branch is up to date with 'origin/develop'.\n>\n> 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\n> 00:08:15.833334 git.c:749               trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n> 00:08:15.834114 run-command.c:657       trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n> 00:08:16.880778 trace.c:414             performance: 0.000013000 s: git command: git --exec-path\n> 00:08:18.216639 git.c:463               trace: built-in: git rev-parse --git-dir\n> 00:08:18.218740 trace.c:414             performance: 0.002132000 s: git command: git rev-parse --git-dir\n> 00:08:18.489025 git.c:463               trace: built-in: git rev-parse --git-path objects\n> 00:08:18.490677 trace.c:414             performance: 0.001675000 s: git command: git rev-parse --git-path objects\n> 00:08:19.031080 git.c:463               trace: built-in: git rev-parse --show-prefix\n> 00:08:19.032882 trace.c:414             performance: 0.001827000 s: git command: git rev-parse --show-prefix\n> 00:08:19.296074 git.c:463               trace: built-in: git rev-parse --show-toplevel\n> 00:08:19.297559 trace.c:414             performance: 0.001504000 s: git command: git rev-parse --show-toplevel\n> 00:08:19.830285 trace.c:314             setup: git_dir: .git\n> 00:08:19.830972 trace.c:315             setup: git_common_dir: .git\n> 00:08:19.830981 trace.c:316             setup: worktree: /Users/vijay/dev/oss/ferdium\n> 00:08:19.830984 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n> 00:08:19.830990 trace.c:318             setup: prefix: (null)\n> 00:08:19.830994 git.c:463               trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n> 00:08:19.834629 read-cache.c:2386       performance: 0.000164000 s: read cache .git/index\n> 00:08:19.834914 unpack-trees.c:2004     performance: 0.000024000 s: traverse_trees\n> 00:08:19.834932 unpack-trees.c:438      performance: 0.000003000 s: check_updates\n> 00:08:19.834940 unpack-trees.c:2096     performance: 0.000157000 s: unpack_trees\n> 00:08:19.834958 diff-lib.c:638          performance: 0.000307000 s:  diff-index\n> 00:08:19.834975 trace.c:414             performance: 0.005922000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n> 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\n> 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\n> 00:08:20.106802 git.c:749               trace: exec: git-submodule summary --files --for-status --summary-limit -1\n> 00:08:20.107638 run-command.c:657       trace: run_command: git-submodule summary --files --for-status --summary-limit -1\n> 00:08:21.162243 trace.c:414             performance: 0.000006000 s: git command: git --exec-path\n> 00:08:22.496146 git.c:463               trace: built-in: git rev-parse --git-dir\n> 00:08:22.497722 trace.c:414             performance: 0.001589000 s: git command: git rev-parse --git-dir\n> 00:08:22.764795 git.c:463               trace: built-in: git rev-parse --git-path objects\n> 00:08:22.766763 trace.c:414             performance: 0.001991000 s: git command: git rev-parse --git-path objects\n> 00:08:23.304626 git.c:463               trace: built-in: git rev-parse --show-prefix\n> 00:08:23.306436 trace.c:414             performance: 0.001833000 s: git command: git rev-parse --show-prefix\n> 00:08:23.575506 git.c:463               trace: built-in: git rev-parse --show-toplevel\n> 00:08:23.577138 trace.c:414             performance: 0.001656000 s: git command: git rev-parse --show-toplevel\n> 00:08:24.111335 trace.c:314             setup: git_dir: .git\n> 00:08:24.112123 trace.c:315             setup: git_common_dir: .git\n> 00:08:24.112138 trace.c:316             setup: worktree: /Users/vijay/dev/oss/ferdium\n> 00:08:24.112142 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n> 00:08:24.112149 trace.c:318             setup: prefix: (null)\n> 00:08:24.112154 git.c:463               trace: built-in: git submodule--helper summary --files --for-status -n -1 --\n> 00:08:24.113679 read-cache.c:2386       performance: 0.000216000 s: read cache .git/index\n> 00:08:24.117811 diff-lib.c:273          performance: 0.004115000 s:  diff-files\n> 00:08:24.117838 trace.c:414             performance: 0.007389000 s: git command: git submodule--helper summary --files --for-status -n -1 --\n> 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\n> nothing to commit, working tree clean\n> 00:08:24.119646 trace.c:414             performance: 8.571954000 s: git command: git status\n>\n> Hope this helps. Also, I noticed that the same repo, same versions of\n> all tools, etc - this issue only occurs on my M2 mac, but works\n> without any slowness on the intel mac.\n\nThanks, that info does help. It at least narrows it down to these two\nsubprocesses:\n\n    git submodule--helper summary --cached --for-status -n -1 -- HEAD\n    git submodule--helper summary --files --for-status -n -1 --\n\nUnfortunately, I'm still not able to reproduce on my M2 (even with that\nconfig set globally), so I wonder if there's something else at play.\nI've probably reached the end of my usefulness (since the problem does\nappear to be specific to submodules and cmd_submodule__helper seems to\nbe lacking documentation), but you might consider replying with your\noutput of\n\n    git config --list --show-scope\n\nafter stripping any private information, of course.\n\nI'll provide my info down below in the hopes that it's useful for\ncomparison by someone who knows more about this subsystem. It's worth\nnoting that I'm running the same submodule--helper command and it's\ncompleting in a reasonable timeframe for me.\n\nConfiguration:\n\n    ferdium-app.git:develop$ git --no-pager config --list --show-scope\n    system\tcredential.helper=osxkeychain\n    system\tfilter.lfs.clean=git-lfs clean -- %f\n    system\tfilter.lfs.smudge=git-lfs smudge -- %f\n    system\tfilter.lfs.process=git-lfs filter-process\n    system\tfilter.lfs.required=true\n    global\tuser.signingkey=/Users/sallred/.ssh/id_ed25519.pub\n    global\tpull.rebase=true\n    global\tpush.default=current\n    global\tcore.editor=mg\n    global\tcore.excludesfile=/Users/sallred/.gitignore\n    global\tcore.fsmonitor=true\n    global\tcore.whitespace=trailing-space\n    global\tinit.defaultbranch=main\n    global\tremote.pushdefault=origin\n    global\tbranch.autosetupmerge=true\n    global\trerere.enabled=true\n    global\tgpg.format=ssh\n    global\tmaintenance.repo=/Users/sallred/a\n    global\tmaintenance.repo=/Users/sallred/b\n    global\tmaintenance.repo=/Users/sallred/c\n    global\tmaintenance.repo=/Users/sallred/d\n    global\tcommit.gpgsign=true\n    global\tdiff.wserrorhighlight=old,new\n    global\tgpg.ssh.allowedsignersfile=/Users/sallred/.ssh/allowed_signers\n    global\tremote.origin.fetch=+refs/notes/*:refs/notes/*\n    global\tstatus.submodulesummary=true\n    local\tcore.repositoryformatversion=0\n    local\tcore.filemode=true\n    local\tcore.bare=false\n    local\tcore.logallrefupdates=true\n    local\tcore.ignorecase=true\n    local\tcore.precomposeunicode=true\n    local\tremote.origin.url=git@github.com:vraravam/ferdium-app\n    local\tremote.origin.fetch=+refs/heads/*:refs/remotes/origin/*\n    local\tbranch.develop.remote=origin\n    local\tbranch.develop.merge=refs/heads/develop\n\nPerformance data:\n\n    ferdium-app.git:develop$ GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status\n    13:29:32.879597 trace.c:314             setup: git_dir: .git\n    13:29:32.880020 trace.c:315             setup: git_common_dir: .git\n    13:29:32.880026 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app\n    13:29:32.880029 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app\n    13:29:32.880033 trace.c:318             setup: prefix: (null)\n    13:29:32.880071 chdir-notify.c:70       setup: chdir from '/Users/sallred/tmp/ferdium-app' to '/Users/sallred/tmp/ferdium-app'\n    13:29:32.880078 git.c:463               trace: built-in: git status\n    13:29:32.880606 read-cache.c:2386       performance: 0.000118000 s:  read cache .git/index\n    13:29:32.904888 read-cache.c:1629       performance: 0.000082000 s:  refresh index\n    13:29:32.905983 diff-lib.c:273          performance: 0.000287000 s:  diff-files\n    13:29:32.907393 unpack-trees.c:2004     performance: 0.000014000 s:    traverse_trees\n    13:29:32.907403 unpack-trees.c:438      performance: 0.000002000 s:    check_updates\n    13:29:32.907407 unpack-trees.c:2096     performance: 0.000109000 s:   unpack_trees\n    13:29:32.907410 diff-lib.c:638          performance: 0.000163000 s:  diff-index\n    13:29:32.907681 name-hash.c:613         performance: 0.000107000 s:  initialize name hash\n    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\n    On branch develop\n    Your branch is up to date with 'origin/develop'.\n\n    13:29:32.928117 git.c:749               trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n    13:29:32.928715 run-command.c:657       trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n    13:29:32.941067 trace.c:414             performance: 0.000002000 s: git command: git --exec-path\n    13:29:32.961582 git.c:463               trace: built-in: git rev-parse --git-dir\n    13:29:32.962376 trace.c:414             performance: 0.000802000 s: git command: git rev-parse --git-dir\n    13:29:32.966772 git.c:463               trace: built-in: git rev-parse --git-path objects\n    13:29:32.967437 trace.c:414             performance: 0.000673000 s: git command: git rev-parse --git-path objects\n    13:29:32.976243 git.c:463               trace: built-in: git rev-parse --show-prefix\n    13:29:32.976902 trace.c:414             performance: 0.000667000 s: git command: git rev-parse --show-prefix\n    13:29:32.981157 git.c:463               trace: built-in: git rev-parse --show-toplevel\n    13:29:32.981835 trace.c:414             performance: 0.000690000 s: git command: git rev-parse --show-toplevel\n    13:29:32.989790 trace.c:314             setup: git_dir: .git\n    13:29:32.990234 trace.c:315             setup: git_common_dir: .git\n    13:29:32.990238 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app\n    13:29:32.990242 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app\n    13:29:32.990245 trace.c:318             setup: prefix: (null)\n    13:29:32.990246 git.c:463               trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n    13:29:32.991301 read-cache.c:2386       performance: 0.000062000 s:  read cache .git/index\n    13:29:33.002570 unpack-trees.c:2004     performance: 0.000009000 s:    traverse_trees\n    13:29:33.002577 unpack-trees.c:438      performance: 0.000001000 s:    check_updates\n    13:29:33.002580 unpack-trees.c:2096     performance: 0.000074000 s:   unpack_trees\n    13:29:33.002585 diff-lib.c:638          performance: 0.000117000 s:  diff-index\n    13:29:33.002591 trace.c:414             performance: 0.013037000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n    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\n    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\n    13:29:33.007530 git.c:749               trace: exec: git-submodule summary --files --for-status --summary-limit -1\n    13:29:33.007926 run-command.c:657       trace: run_command: git-submodule summary --files --for-status --summary-limit -1\n    13:29:33.017316 trace.c:414             performance: 0.000002000 s: git command: git --exec-path\n    13:29:33.036544 git.c:463               trace: built-in: git rev-parse --git-dir\n    13:29:33.037494 trace.c:414             performance: 0.000959000 s: git command: git rev-parse --git-dir\n    13:29:33.041936 git.c:463               trace: built-in: git rev-parse --git-path objects\n    13:29:33.042731 trace.c:414             performance: 0.000803000 s: git command: git rev-parse --git-path objects\n    13:29:33.051651 git.c:463               trace: built-in: git rev-parse --show-prefix\n    13:29:33.052320 trace.c:414             performance: 0.000678000 s: git command: git rev-parse --show-prefix\n    13:29:33.056260 git.c:463               trace: built-in: git rev-parse --show-toplevel\n    13:29:33.057043 trace.c:414             performance: 0.000793000 s: git command: git rev-parse --show-toplevel\n    13:29:33.064488 trace.c:314             setup: git_dir: .git\n    13:29:33.064860 trace.c:315             setup: git_common_dir: .git\n    13:29:33.064862 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app\n    13:29:33.064863 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app\n    13:29:33.064866 trace.c:318             setup: prefix: (null)\n    13:29:33.064867 git.c:463               trace: built-in: git submodule--helper summary --files --for-status -n -1 --\n    13:29:33.065421 read-cache.c:2386       performance: 0.000085000 s:  read cache .git/index\n    13:29:33.079310 diff-lib.c:273          performance: 0.000026000 s:  diff-files\n    13:29:33.079330 trace.c:414             performance: 0.015094000 s: git command: git submodule--helper summary --files --for-status -n -1 --\n    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\n    13:29:33.080290 trace.c:414             performance: 0.201218000 s: git command: git status\n    nothing to commit, working tree clean\n\n--\nSean Allred\n"},{"id":"488373","messageId":"CAK7MZG1whUj23y5DoqXOjtiB2kFRfT-gi6r1r=GC5HvM5jneNQ@mail.gmail.com","threadId":"60890","inReplyTo":"m0o7co8688.fsf@epic96565.epic.com","subject":"Re: git status became very slow after upgrading git","fromName":"Vijay Raghavan Aravamudhan","fromEmail":"avijayr@gmail.com","sentAt":"2024-02-10T19:57:17Z","receivedAt":"2024-02-10T19:57:32Z","isPatch":false,"sender":{"key":"avijayr@gmail.com","avatar":"https://gravatar.com/avatar/e406836d0925e2458d3a4f794bc2d4199c0c54049612c9557c68f20e47f519d6?d=mp&s=160"},"body":"Thanks for the quick response!\nHere's the data requested:\nsystem credential.helper=osxkeychain\nglobal includeif.gitdir/i:~/.path=~/.gitconfig-oss.inc\nglobal advice.detachedhead=true\nglobal alias.dangling=fsck --no-reflog\nglobal alias.ec=config --global -e\nglobal alias.f=!git ls-files | grep -i\nglobal alias.sci=!sh -c ' if $(git st | grep -q \"have diverged\"); then\necho \"Diverged branches: aborting\"; exit 1; elif ! $(git st | grep -q\n\"to unstage\"); then echo \"Nothing to commit: aborting\"; else if $(git\nst | grep -q \"is ahead of\"); then echo \"Amending existing commit\"; git\namq; else echo \"Creating new commit\"; echo $0; git ci \"$0\"; fi fi'\nglobal alias.what=show -s --pretty='tformat:%h (%s, %ad)' --date=short\nglobal alias.who=shortlog -s --\nglobal alias.whois=log -i -1 --pretty=format:'%an <%ae>' --author\nglobal alias.standup=log --since 1.week.ago --author\nglobal alias.lg=log --color --graph\n--pretty=format:'%C(yellow)%h%Creset -%C(bold blue)%d%Creset %s\n%C(green) %an, %cr%Creset' --abbrev-commit\nglobal alias.lga=log --color --graph --all\n--pretty=format:'%C(yellow)%h%Creset -%C(bold blue)%d%Creset %s\n%C(green) %an, %cr%Creset' --abbrev-commit\nglobal alias.ll=log --decorate --graph --oneline --abbrev-commit\nglobal alias.mn=merge --no-commit\nglobal alias.cn=cherry-pick --no-commit\nglobal alias.cr=cherry-pick\nglobal alias.ci=commit -m\nglobal alias.co=checkout\nglobal alias.cl=clone\nglobal alias.st=!git status --ahead-behind && git submodule summary\nglobal alias.sts=status -sb\nglobal alias.b=branch\nglobal alias.d=diff\nglobal alias.dc=diff --staged\nglobal alias.undo=reset --soft HEAD^\nglobal alias.wipe=!git add -A && git commit -qm 'WIPE SAVEPOINT if\nneeded later, can be resurrected using reflog' && git reset HEAD~1\n--hard\nglobal alias.amend=commit --amend --date=now\nglobal alias.amq=amend --no-edit --quiet\nglobal alias.unstage=restore --staged\nglobal alias.large=!git ls-tree -r -t -l --full-name HEAD | sort -n -k\n4 | tail -n 10\nglobal alias.untrack=rm -rf --cached --\nglobal alias.grep=grep -Ii\nglobal alias.patch=!git --no-pager diff --no-color\nglobal alias.track=rev-parse --abbrev-ref --symbolic-full-name @{u}\nglobal alias.fo=!git fetch --all --tags && git dlb\nglobal alias.repo=!basename `git remote get-url origin`\nglobal alias.br=branch --show-current\nglobal alias.upreb=!git branch -u origin/`git br` && git fo && ( git\nremote | grep upstream 2>&1 >/dev/null ) && git rebase upstream/`git\nbr` --no-verify && git fetch upstream --tags && git push --no-verify\n&& git push --tags --no-verify && git siu && git dlb\nglobal alias.rpo=remote prune origin\nglobal alias.in=log --reverse ..@{u} --stat --no-merges\nglobal alias.inp=log -p --reverse ..@{u} --no-merges\nglobal alias.inc=!git diff ..@{u}\nglobal alias.new=!sh -c 'git log $1@{1}..$1@{0} $@'\nglobal alias.ghpg-trim=!r() { days=${1:-19}; echo \"Will clean beyond\n$days days\" && git checkout gh-pages && echo \"Size before: $(du -sh\n*reports)\" && DIRECTORIES=$(find *-reports -mindepth 1 -maxdepth 1\n-type d); for dir in ${DIRECTORIES}; do SHA_FROM_DIR=\"$(basename\n$dir)\"; COMMIT_DATE_IN_MILLIS=$(git show -s --format=%ct $SHA_FROM_DIR\n2> /dev/null || echo 5000000000); COMMIT_DATE_IN_DAYS=$(echo\n\"$COMMIT_DATE_IN_MILLIS / (1000 * 60 * 60 * 24)\" | bc -l); ((\n${COMMIT_DATE_IN_DAYS%.*} > ${days%.*} )) && git rm -rf $dir; done;\ngit commit -m \"Deleting reports older than $days days\" && echo $(git\nrev-parse HEAD) > .git/info/grafts && git config\nadvice.graftFileDeprecated false && FILTER_BRANCH_SQUELCH_WARNING=1\ngit filter-branch -f -- --all; rm -f .git/info/grafts; echo \"Size\nafter: $(du -sh *reports)\" done;}; r\nglobal alias.out=log --reverse @{u}..\nglobal alias.outp=log -p --reverse @{u}..\nglobal alias.g=grep --break --heading --line-number\nglobal alias.sf=submodule foreach\nglobal alias.rfc=reflog expire --expire=now\nglobal alias.cc=!echo \"Size before: $(du -sh .git | cut -f1)\"; git\nremote prune origin; git repack; git prune-packed; git reflog expire\n--all --expire=1.week.ago; git maintenance run --task=gc; echo \"Size\nafter: $(du -sh .git | cut -f1)\";\nglobal alias.big=!git rev-list --objects --all | grep \"$(git\nverify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -100 |\nawk '{print $1}')\"\nglobal alias.dlb=!git branch -vv | GREP_OPTIONS= grep ': gone]' | awk\n'{print $1}' | xargs -I {} git branch -D {}\nglobal alias.old=!sh -c '[[ \"`git log $0/$1 --since 10.days -1 | wc\n-l`\" -eq 0 ]] && echo \"Will need to delete $0/$1\"'\nglobal alias.recentb=!r() { refbranch=$1 count=$2; git for-each-ref\n--sort=-committerdate refs/remotes\n--format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold\ngreen)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)'\n--color=always --count=${count:-20} | while read line; do\nbranch=$(echo \"$line\" | awk 'BEGIN { FS = \"|\" }; { print $1 }' | tr -d\n'*'); ahead=$(git rev-list --count\n\"${refbranch:-origin/master}..${branch}\"); behind=$(git rev-list\n--count \"${branch}..${refbranch:-origin/master}\"); colorline=$(echo\n\"$line\" | sed 's/^[^|]*|//'); echo \"$ahead|$behind|$colorline\" | awk\n-F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; done | ( echo\n\"ahead|behind||branch|lastcommit|message|author\\n\" && cat) | column\n-ts'|';}; r\nglobal alias.oldestb=!r() { refbranch=$1 count=$2; git for-each-ref\n--sort=committerdate refs/remotes\n--format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold\ngreen)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)'\n--color=always --count=${count:-20} | while read line; do\nbranch=$(echo \"$line\" | awk 'BEGIN { FS = \"|\" }; { print $1 }' | tr -d\n'*'); ahead=$(git rev-list --count\n\"${refbranch:-origin/master}..${branch}\"); behind=$(git rev-list\n--count \"${branch}..${refbranch:-origin/master}\"); colorline=$(echo\n\"$line\" | sed 's/^[^|]*|//'); echo \"$ahead|$behind|$colorline\" | awk\n-F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; done | ( echo\n\"ahead|behind||branch|lastcommit|message|author\\n\" && cat) | column\n-ts'|';}; r\nglobal alias.lc=!git branch -r --sort=-committerdate\n--format=\"%(color:magenta)%(committerdate:relative)%(color:reset)\n%(color:bold cyan)%(refname:short)%(color:reset) %(contents:subject)\n%(color:bold blue) <%(authorname)> %(color:reset)\"\nglobal alias.lc2=!git branch -r --sort=-committerdate | egrep -v\n'HEAD|master|main' | while read b; do git log --since 4.days --color\n--format=\"%ci _%C(magenta)%cr %C(bold cyan)$b%Creset %s %C(bold\nblue)<%an>%Creset\" $b | head -n 1; done | sort -r | cut -d_ -f2-\nglobal alias.se=!git rev-list --all | xargs git grep -F\nglobal alias.siu=!git submodule update --init --recursive --remote\n--rebase --force\nglobal alias.pushsub=sf git push\nglobal alias.pullsub=sf git pull\nglobal alias.dcolor=diff --color-words\nglobal branch.autosetupmerge=true\nglobal branch.autosetuprebase=always\nglobal branch.sort=committerdate\nglobal checkout.defaultremote=origin\nglobal checkout.workers=0\nglobal color.diff.meta=yellow\nglobal color.diff.frag=magenta bold\nglobal color.diff.func=146 bold\nglobal color.diff.commit=yellow bold\nglobal color.diff.old=red bold\nglobal color.diff.new=green bold\nglobal color.diff.whitespace=red reverse\nglobal core.pager=diff-so-fancy | less --tabs=2 -RFX\nglobal core.editor=codium --wait\nglobal core.autocrlf=input\nglobal core.excludesfile=~/.gitignore_global\nglobal core.commentchar=*\nglobal core.whitespace=fix\nglobal diff.compactionheuristic=true\nglobal diff.renames=true\nglobal diff.renamelimit=1000\nglobal diff.colormoved=default\nglobal diff.submodule=diff\nglobal diff-so-fancy.markemptylines=false\nglobal fetch.prune=true\nglobal fetch.prunetags=true\nglobal fetch.parallel=0\nglobal fetch.showforcedupdates=true\nglobal filter.lfs.required=true\nglobal filter.lfs.clean=git-lfs clean -- %f\nglobal filter.lfs.smudge=git-lfs smudge -- %f\nglobal filter.lfs.process=git-lfs filter-process\nglobal gc.auto=2000\nglobal gc.pruneexpire=now\nglobal gc.worktreepruneexpire=1.weeks.ago\nglobal gc.reflogexpire=2.weeks.ago\nglobal gc.reflogexpireunreachable=2.weeks.ago\nglobal gc.rerereresolved=1.weeks.ago\nglobal grep.column=true\nglobal grep.extendedregexp=true\nglobal grep.linenumber=true\nglobal grep.fullname=true\nglobal gui.pruneduringfetch=true\nglobal gui.matchtrackingbranch=true\nglobal gui.warndetachedcommit=true\nglobal gui.tabsize=2\nglobal help.autocorrect=1\nglobal interactive.difffilter=diff-so-fancy --patch\nglobal merge.defaulttoupstream=true\nglobal merge.ff=only\nglobal merge.renamelimit=15000\nglobal merge.autostash=true\nglobal pack.threads=0\nglobal pack.writereverseindex=true\nglobal pager.diff=diff-so-fancy | less --tabs=2 -RFX\nglobal pull.rebase=true\nglobal pull.autostash=true\nglobal push.default=upstream\nglobal push.followtags=true\nglobal push.recursesubmodules=check\nglobal rebase.autosquash=true\nglobal rebase.autostash=true\nglobal rebase.missingcommitscheck=error\nglobal rebase.abbreviatecommands=true\nglobal rerere.enabled=true\nglobal rerere.autoupdate=true\nglobal stash.untracked=true\nglobal stash.showincludeuntracked=true\nglobal stash.showpatch=true\nglobal status.showstash=true\nglobal submodule.fetchjobs=0\nglobal tag.sort=version:refname\nglobal transfer.fsckobjects=false\nglobal http.postbuffer=786432000\nglobal user.useconfigonly=true\nglobal add.interactive.usebuiltin=false\nglobal init.defaultbranch=master\nlocal core.repositoryformatversion=0\nlocal core.filemode=true\nlocal core.bare=false\nlocal core.logallrefupdates=true\nlocal core.ignorecase=true\nlocal core.precomposeunicode=true\nlocal core.hookspath=.husky\nlocal remote.origin.url=git@github.com:vraravam/ferdium-app\nlocal remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*\nlocal branch.develop.remote=origin\nlocal branch.develop.rebase=true\nlocal branch.develop.merge=refs/heads/develop\nlocal remote.upstream.url=git@github.com:ferdium/ferdium-app\nlocal remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*\nlocal submodule.recipes.active=true\nlocal submodule.recipes.url=https://github.com/ferdium/ferdium-recipes.git\nlocal branch.nightly.remote=origin\nlocal branch.nightly.rebase=true\nlocal branch.nightly.merge=refs/heads/nightly\nlocal branch.release.remote=origin\nlocal branch.release.rebase=true\nlocal branch.release.merge=refs/heads/release\nlocal gui.wmstate=normal\nlocal gui.geometry=1381x921+5+48 201 203\n\nOn Sun, Feb 11, 2024 at 1:03 AM Sean Allred <allred.sean@gmail.com> wrote:\n>\n>\n> Vijay Raghavan Aravamudhan <avijayr@gmail.com> writes:\n>\n> > Thanks for responding. I have run the command that you gave on an open\n> > source repo so that its easy for you to replicate. The remote url is:\n> > https://github.com/vraravam/ferdium-app\n> >\n> > The output is:\n> >\n> >         [[ I took the liberty of cleaning this up; ]]\n> >         [[ let's hope formatting is preserved now. ]]\n> >\n> > ferdium-app.git:develop$ GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status\n> > 00:08:15.548976 trace.c:314             setup: git_dir: .git\n> > 00:08:15.550590 trace.c:315             setup: git_common_dir: .git\n> > 00:08:15.550600 trace.c:316             setup: worktree: /Users/vijay/dev/oss/ferdium\n> > 00:08:15.550604 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n> > 00:08:15.550611 trace.c:318             setup: prefix: (null)\n> > 00:08:15.550707 chdir-notify.c:70       setup: chdir from '/Users/vijay/dev/oss/ferdium' to '/Users/vijay/dev/oss/ferdium'\n> > 00:08:15.550723 git.c:463               trace: built-in: git status\n> > 00:08:15.552184 read-cache.c:2386       performance: 0.000183000 s: read cache .git/index\n> > 00:08:15.555964 read-cache.c:1629       performance: 0.003696000 s: refresh index\n> > 00:08:15.556442 diff-lib.c:273          performance: 0.000132000 s:  diff-files\n> > 00:08:15.558558 unpack-trees.c:2004     performance: 0.000019000 s: traverse_trees\n> > 00:08:15.558801 unpack-trees.c:438      performance: 0.000003000 s: check_updates\n> > 00:08:15.558813 unpack-trees.c:2096     performance: 0.000394000 s: unpack_trees\n> > 00:08:15.558819 diff-lib.c:638          performance: 0.000524000 s:  diff-index\n> > 00:08:15.559166 name-hash.c:613         performance: 0.000148000 s: initialize name hash\n> > On branch develop\n> > Your branch is up to date with 'origin/develop'.\n> >\n> > 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\n> > 00:08:15.833334 git.c:749               trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n> > 00:08:15.834114 run-command.c:657       trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n> > 00:08:16.880778 trace.c:414             performance: 0.000013000 s: git command: git --exec-path\n> > 00:08:18.216639 git.c:463               trace: built-in: git rev-parse --git-dir\n> > 00:08:18.218740 trace.c:414             performance: 0.002132000 s: git command: git rev-parse --git-dir\n> > 00:08:18.489025 git.c:463               trace: built-in: git rev-parse --git-path objects\n> > 00:08:18.490677 trace.c:414             performance: 0.001675000 s: git command: git rev-parse --git-path objects\n> > 00:08:19.031080 git.c:463               trace: built-in: git rev-parse --show-prefix\n> > 00:08:19.032882 trace.c:414             performance: 0.001827000 s: git command: git rev-parse --show-prefix\n> > 00:08:19.296074 git.c:463               trace: built-in: git rev-parse --show-toplevel\n> > 00:08:19.297559 trace.c:414             performance: 0.001504000 s: git command: git rev-parse --show-toplevel\n> > 00:08:19.830285 trace.c:314             setup: git_dir: .git\n> > 00:08:19.830972 trace.c:315             setup: git_common_dir: .git\n> > 00:08:19.830981 trace.c:316             setup: worktree: /Users/vijay/dev/oss/ferdium\n> > 00:08:19.830984 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n> > 00:08:19.830990 trace.c:318             setup: prefix: (null)\n> > 00:08:19.830994 git.c:463               trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n> > 00:08:19.834629 read-cache.c:2386       performance: 0.000164000 s: read cache .git/index\n> > 00:08:19.834914 unpack-trees.c:2004     performance: 0.000024000 s: traverse_trees\n> > 00:08:19.834932 unpack-trees.c:438      performance: 0.000003000 s: check_updates\n> > 00:08:19.834940 unpack-trees.c:2096     performance: 0.000157000 s: unpack_trees\n> > 00:08:19.834958 diff-lib.c:638          performance: 0.000307000 s:  diff-index\n> > 00:08:19.834975 trace.c:414             performance: 0.005922000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n> > 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\n> > 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\n> > 00:08:20.106802 git.c:749               trace: exec: git-submodule summary --files --for-status --summary-limit -1\n> > 00:08:20.107638 run-command.c:657       trace: run_command: git-submodule summary --files --for-status --summary-limit -1\n> > 00:08:21.162243 trace.c:414             performance: 0.000006000 s: git command: git --exec-path\n> > 00:08:22.496146 git.c:463               trace: built-in: git rev-parse --git-dir\n> > 00:08:22.497722 trace.c:414             performance: 0.001589000 s: git command: git rev-parse --git-dir\n> > 00:08:22.764795 git.c:463               trace: built-in: git rev-parse --git-path objects\n> > 00:08:22.766763 trace.c:414             performance: 0.001991000 s: git command: git rev-parse --git-path objects\n> > 00:08:23.304626 git.c:463               trace: built-in: git rev-parse --show-prefix\n> > 00:08:23.306436 trace.c:414             performance: 0.001833000 s: git command: git rev-parse --show-prefix\n> > 00:08:23.575506 git.c:463               trace: built-in: git rev-parse --show-toplevel\n> > 00:08:23.577138 trace.c:414             performance: 0.001656000 s: git command: git rev-parse --show-toplevel\n> > 00:08:24.111335 trace.c:314             setup: git_dir: .git\n> > 00:08:24.112123 trace.c:315             setup: git_common_dir: .git\n> > 00:08:24.112138 trace.c:316             setup: worktree: /Users/vijay/dev/oss/ferdium\n> > 00:08:24.112142 trace.c:317             setup: cwd: /Users/vijay/dev/oss/ferdium\n> > 00:08:24.112149 trace.c:318             setup: prefix: (null)\n> > 00:08:24.112154 git.c:463               trace: built-in: git submodule--helper summary --files --for-status -n -1 --\n> > 00:08:24.113679 read-cache.c:2386       performance: 0.000216000 s: read cache .git/index\n> > 00:08:24.117811 diff-lib.c:273          performance: 0.004115000 s:  diff-files\n> > 00:08:24.117838 trace.c:414             performance: 0.007389000 s: git command: git submodule--helper summary --files --for-status -n -1 --\n> > 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\n> > nothing to commit, working tree clean\n> > 00:08:24.119646 trace.c:414             performance: 8.571954000 s: git command: git status\n> >\n> > Hope this helps. Also, I noticed that the same repo, same versions of\n> > all tools, etc - this issue only occurs on my M2 mac, but works\n> > without any slowness on the intel mac.\n>\n> Thanks, that info does help. It at least narrows it down to these two\n> subprocesses:\n>\n>     git submodule--helper summary --cached --for-status -n -1 -- HEAD\n>     git submodule--helper summary --files --for-status -n -1 --\n>\n> Unfortunately, I'm still not able to reproduce on my M2 (even with that\n> config set globally), so I wonder if there's something else at play.\n> I've probably reached the end of my usefulness (since the problem does\n> appear to be specific to submodules and cmd_submodule__helper seems to\n> be lacking documentation), but you might consider replying with your\n> output of\n>\n>     git config --list --show-scope\n>\n> after stripping any private information, of course.\n>\n> I'll provide my info down below in the hopes that it's useful for\n> comparison by someone who knows more about this subsystem. It's worth\n> noting that I'm running the same submodule--helper command and it's\n> completing in a reasonable timeframe for me.\n>\n> Configuration:\n>\n>     ferdium-app.git:develop$ git --no-pager config --list --show-scope\n>     system      credential.helper=osxkeychain\n>     system      filter.lfs.clean=git-lfs clean -- %f\n>     system      filter.lfs.smudge=git-lfs smudge -- %f\n>     system      filter.lfs.process=git-lfs filter-process\n>     system      filter.lfs.required=true\n>     global      user.signingkey=/Users/sallred/.ssh/id_ed25519.pub\n>     global      pull.rebase=true\n>     global      push.default=current\n>     global      core.editor=mg\n>     global      core.excludesfile=/Users/sallred/.gitignore\n>     global      core.fsmonitor=true\n>     global      core.whitespace=trailing-space\n>     global      init.defaultbranch=main\n>     global      remote.pushdefault=origin\n>     global      branch.autosetupmerge=true\n>     global      rerere.enabled=true\n>     global      gpg.format=ssh\n>     global      maintenance.repo=/Users/sallred/a\n>     global      maintenance.repo=/Users/sallred/b\n>     global      maintenance.repo=/Users/sallred/c\n>     global      maintenance.repo=/Users/sallred/d\n>     global      commit.gpgsign=true\n>     global      diff.wserrorhighlight=old,new\n>     global      gpg.ssh.allowedsignersfile=/Users/sallred/.ssh/allowed_signers\n>     global      remote.origin.fetch=+refs/notes/*:refs/notes/*\n>     global      status.submodulesummary=true\n>     local       core.repositoryformatversion=0\n>     local       core.filemode=true\n>     local       core.bare=false\n>     local       core.logallrefupdates=true\n>     local       core.ignorecase=true\n>     local       core.precomposeunicode=true\n>     local       remote.origin.url=git@github.com:vraravam/ferdium-app\n>     local       remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*\n>     local       branch.develop.remote=origin\n>     local       branch.develop.merge=refs/heads/develop\n>\n> Performance data:\n>\n>     ferdium-app.git:develop$ GIT_TRACE=1 GIT_TRACE_SETUP=1 GIT_TRACE_PERFORMANCE=1 git status\n>     13:29:32.879597 trace.c:314             setup: git_dir: .git\n>     13:29:32.880020 trace.c:315             setup: git_common_dir: .git\n>     13:29:32.880026 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app\n>     13:29:32.880029 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app\n>     13:29:32.880033 trace.c:318             setup: prefix: (null)\n>     13:29:32.880071 chdir-notify.c:70       setup: chdir from '/Users/sallred/tmp/ferdium-app' to '/Users/sallred/tmp/ferdium-app'\n>     13:29:32.880078 git.c:463               trace: built-in: git status\n>     13:29:32.880606 read-cache.c:2386       performance: 0.000118000 s:  read cache .git/index\n>     13:29:32.904888 read-cache.c:1629       performance: 0.000082000 s:  refresh index\n>     13:29:32.905983 diff-lib.c:273          performance: 0.000287000 s:  diff-files\n>     13:29:32.907393 unpack-trees.c:2004     performance: 0.000014000 s:    traverse_trees\n>     13:29:32.907403 unpack-trees.c:438      performance: 0.000002000 s:    check_updates\n>     13:29:32.907407 unpack-trees.c:2096     performance: 0.000109000 s:   unpack_trees\n>     13:29:32.907410 diff-lib.c:638          performance: 0.000163000 s:  diff-index\n>     13:29:32.907681 name-hash.c:613         performance: 0.000107000 s:  initialize name hash\n>     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\n>     On branch develop\n>     Your branch is up to date with 'origin/develop'.\n>\n>     13:29:32.928117 git.c:749               trace: exec: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n>     13:29:32.928715 run-command.c:657       trace: run_command: git-submodule summary --cached --for-status --summary-limit -1 HEAD\n>     13:29:32.941067 trace.c:414             performance: 0.000002000 s: git command: git --exec-path\n>     13:29:32.961582 git.c:463               trace: built-in: git rev-parse --git-dir\n>     13:29:32.962376 trace.c:414             performance: 0.000802000 s: git command: git rev-parse --git-dir\n>     13:29:32.966772 git.c:463               trace: built-in: git rev-parse --git-path objects\n>     13:29:32.967437 trace.c:414             performance: 0.000673000 s: git command: git rev-parse --git-path objects\n>     13:29:32.976243 git.c:463               trace: built-in: git rev-parse --show-prefix\n>     13:29:32.976902 trace.c:414             performance: 0.000667000 s: git command: git rev-parse --show-prefix\n>     13:29:32.981157 git.c:463               trace: built-in: git rev-parse --show-toplevel\n>     13:29:32.981835 trace.c:414             performance: 0.000690000 s: git command: git rev-parse --show-toplevel\n>     13:29:32.989790 trace.c:314             setup: git_dir: .git\n>     13:29:32.990234 trace.c:315             setup: git_common_dir: .git\n>     13:29:32.990238 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app\n>     13:29:32.990242 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app\n>     13:29:32.990245 trace.c:318             setup: prefix: (null)\n>     13:29:32.990246 git.c:463               trace: built-in: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n>     13:29:32.991301 read-cache.c:2386       performance: 0.000062000 s:  read cache .git/index\n>     13:29:33.002570 unpack-trees.c:2004     performance: 0.000009000 s:    traverse_trees\n>     13:29:33.002577 unpack-trees.c:438      performance: 0.000001000 s:    check_updates\n>     13:29:33.002580 unpack-trees.c:2096     performance: 0.000074000 s:   unpack_trees\n>     13:29:33.002585 diff-lib.c:638          performance: 0.000117000 s:  diff-index\n>     13:29:33.002591 trace.c:414             performance: 0.013037000 s: git command: git submodule--helper summary --cached --for-status -n -1 -- HEAD\n>     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\n>     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\n>     13:29:33.007530 git.c:749               trace: exec: git-submodule summary --files --for-status --summary-limit -1\n>     13:29:33.007926 run-command.c:657       trace: run_command: git-submodule summary --files --for-status --summary-limit -1\n>     13:29:33.017316 trace.c:414             performance: 0.000002000 s: git command: git --exec-path\n>     13:29:33.036544 git.c:463               trace: built-in: git rev-parse --git-dir\n>     13:29:33.037494 trace.c:414             performance: 0.000959000 s: git command: git rev-parse --git-dir\n>     13:29:33.041936 git.c:463               trace: built-in: git rev-parse --git-path objects\n>     13:29:33.042731 trace.c:414             performance: 0.000803000 s: git command: git rev-parse --git-path objects\n>     13:29:33.051651 git.c:463               trace: built-in: git rev-parse --show-prefix\n>     13:29:33.052320 trace.c:414             performance: 0.000678000 s: git command: git rev-parse --show-prefix\n>     13:29:33.056260 git.c:463               trace: built-in: git rev-parse --show-toplevel\n>     13:29:33.057043 trace.c:414             performance: 0.000793000 s: git command: git rev-parse --show-toplevel\n>     13:29:33.064488 trace.c:314             setup: git_dir: .git\n>     13:29:33.064860 trace.c:315             setup: git_common_dir: .git\n>     13:29:33.064862 trace.c:316             setup: worktree: /Users/sallred/tmp/ferdium-app\n>     13:29:33.064863 trace.c:317             setup: cwd: /Users/sallred/tmp/ferdium-app\n>     13:29:33.064866 trace.c:318             setup: prefix: (null)\n>     13:29:33.064867 git.c:463               trace: built-in: git submodule--helper summary --files --for-status -n -1 --\n>     13:29:33.065421 read-cache.c:2386       performance: 0.000085000 s:  read cache .git/index\n>     13:29:33.079310 diff-lib.c:273          performance: 0.000026000 s:  diff-files\n>     13:29:33.079330 trace.c:414             performance: 0.015094000 s: git command: git submodule--helper summary --files --for-status -n -1 --\n>     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\n>     13:29:33.080290 trace.c:414             performance: 0.201218000 s: git command: git status\n>     nothing to commit, working tree clean\n>\n> --\n> Sean Allred\n\n\n\n-- \nYou can visit my Github Profile to get to know what I work on outside\nof my day job\n"}]}