Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git-redential-manager get is extremely slow sometimes #1689

Open
Dimension4 opened this issue Aug 14, 2024 · 2 comments
Open

git-redential-manager get is extremely slow sometimes #1689

Dimension4 opened this issue Aug 14, 2024 · 2 comments
Labels
auth-issue An issue authenticating to a host

Comments

@Dimension4
Copy link

Version

2.5.1+90d5f897f164a8fe07d2aa3bf7db439b0b4e03ea

Operating system

Windows

OS version or distribution

Windows 11 23H2 x64

Git hosting provider(s)

Other - please describe below

Other hosting provider

Both GitHub and Azure DevOps

(Azure DevOps only) What format is your remote URL?

https://{org}@dev.azure.com/{org}

Can you access the remote repository directly in the browser?

Yes, I can access the repository

Expected behavior

git pull and git fetch complete in reasonable time.

Actual behavior

Roughly 10% of the time when I run git pull or git fetch, it takes ~15s to complete (usually it's ~1s). It doesn't pull any big updates, I can just spam git pull in the terminal and it will produce this issue occasionally. I've enabled trace logging and found that the first git-credential-manager get call sometimes takes ~15s to complete and I don't know why. This seems to be repository agnostic (at least it happens with different repos on github and Azure DevOps. I've tested some of the repos on other machines in the same network and they don't have this issue. I've also tested with the same machine in two different networks and it happened in both of them.

Things I've also tried:

  • set the credential provider to generic in my .gitconfig
  • clear all git related credentials in the Windows Credential Manager
  • reinstall git and delete my git config
  • git credential-manager azure-repos clear-cache

None of these steps solved the issue and I'm at a loss of how to debug this further.

Logs

Trace logs for git pull:

09:10:33.001709 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/bin
09:10:33.003730 git.c:465               trace: built-in: git pull
09:10:33.010726 read-cache.c:2392       performance: 0.006184700 s:  read cache .git/index
09:10:33.049335 preload-index.c:171     performance: 0.037780500 s:   preload index
09:10:33.050227 read-cache.c:1634       performance: 0.038517500 s:  refresh index
09:10:33.051235 diff-lib.c:288          performance: 0.000320000 s:  diff-files
09:10:33.053234 unpack-trees.c:2006     performance: 0.000011100 s:    traverse_trees
09:10:33.053234 unpack-trees.c:438      performance: 0.000003500 s:    check_updates
09:10:33.053234 unpack-trees.c:2098     performance: 0.000431800 s:   unpack_trees
09:10:33.053234 diff-lib.c:654          performance: 0.000506300 s:  diff-index
09:10:33.053234 run-command.c:657       trace: run_command: git merge-base --fork-point refs/remotes/origin/master master
09:10:33.081263 run-command.c:657       trace: run_command: git fetch --update-head-ok
09:10:33.097007 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:33.098009 git.c:465               trace: built-in: git fetch --update-head-ok
09:10:33.105009 read-cache.c:2392       performance: 0.006537400 s:  read cache .git/index
09:10:33.108025 run-command.c:657       trace: run_command: GIT_DIR=.git git remote-https origin REPO_URL
09:10:33.124515 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:33.125532 git.c:750               trace: exec: git-remote-https origin REPO_URL
09:10:33.125719 run-command.c:657       trace: run_command: git-remote-https origin REPO_URL
09:10:33.141672 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:33.479315 run-command.c:657       trace: run_command: 'git credential-manager get'
09:10:48.527251 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:48.528203 git.c:750               trace: exec: git-credential-manager get
09:10:48.528203 run-command.c:657       trace: run_command: git-credential-manager get
09:10:48.594775 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:48.596775 git.c:465               trace: built-in: git config --null --list
09:10:48.596775 trace.c:414             performance: 0.001134100 s: git command: 'C:/Program Files/Git/mingw64/libexec/git-core\git.exe' config --null --list
09:10:48.679436 trace.c:414             performance: 0.151675500 s: git command: 'C:\Program Files\Git\mingw64\libexec\git-core\git.exe' credential-manager get
09:10:48.759250 run-command.c:657       trace: run_command: 'git credential-manager store'
09:10:48.808134 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:48.809132 git.c:750               trace: exec: git-credential-manager store
09:10:48.809132 run-command.c:657       trace: run_command: git-credential-manager store
09:10:48.871904 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:48.872900 git.c:465               trace: built-in: git config --null --list
09:10:48.873918 trace.c:414             performance: 0.000994900 s: git command: 'C:/Program Files/Git/mingw64/libexec/git-core\git.exe' config --null --list
09:10:48.971395 trace.c:414             performance: 0.162323100 s: git command: 'C:\Program Files\Git\mingw64\libexec\git-core\git.exe' credential-manager store
09:10:48.992378 run-command.c:657       trace: run_command: git rev-list --objects --stdin --not --exclude-hidden=fetch --all --quiet --alternate-refs
From REPO_URL_WITHOUT_USER
 * [new branch]            Foo -> origin/Foo
09:10:49.037430 trace.c:414             performance: 15.912550800 s: git command: git remote-https origin REPO_URL
09:10:49.040106 run-command.c:1521      run_processes_parallel: preparing to run up to 1 tasks
09:10:49.040106 run-command.c:1549      run_processes_parallel: done
09:10:49.040106 run-command.c:657       trace: run_command: git maintenance run --auto --no-quiet
09:10:49.056126 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:49.058128 git.c:465               trace: built-in: git maintenance run --auto --no-quiet
09:10:49.060123 trace.c:414             performance: 0.002921300 s: git command: git maintenance run --auto --no-quiet
09:10:49.062136 trace.c:414             performance: 15.964827600 s: git command: git fetch --update-head-ok
09:10:49.065651 run-command.c:657       trace: run_command: git merge --ff-only --no-autostash FETCH_HEAD
09:10:49.081652 exec-cmd.c:243          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
09:10:49.083870 git.c:465               trace: built-in: git merge --ff-only --no-autostash FETCH_HEAD
09:10:49.092669 read-cache.c:2392       performance: 0.006409300 s:  read cache .git/index
Already up to date.
09:10:49.094197 trace.c:414             performance: 0.012202200 s: git command: git merge --ff-only --no-autostash FETCH_HEAD
09:10:49.097237 trace.c:414             performance: 16.094451100 s: git command: git.exe pull

git credential-manager diagnose:

Diagnose log at 2024-08-14T07:59:01Z

AppPath: C:\Program Files\Git\mingw64\bin\git-credential-manager.exe
InstallDir: C:\Program Files\Git\mingw64\bin\
Version: 2.5.1+90d5f897f164a8fe07d2aa3bf7db439b0b4e03ea

------------
Diagnostic: Networking
Skipped: False
Success: True
Exception: None
Log:
Checking networking and HTTP stack...
Creating HTTP client... OK
IsNetworkAvailable: True
Sending HEAD request to http://example.com...Sending HEAD request to https://example.com... OK
 OK
Acquiring free TCP port... OK
Testing local HTTP loopback connections...
Creating new HTTP listener for http://localhost:58323/... OK
Waiting for loopback connection... OK
Writing response... OK
Waiting for response data... OK
Loopback connection data OK

------------
Diagnostic: Git
Skipped: False
Success: True
Exception: None
Log:
Getting Git version... OK
Git version is '2.46.0.windows.1'
Listing all Git configuration... OK
Git configuration:
file:C:/Program Files/Git/etc/gitconfig	diff.astextplain.textconv=astextplain
file:C:/Program Files/Git/etc/gitconfig	filter.lfs.clean=git-lfs clean -- %f
file:C:/Program Files/Git/etc/gitconfig	filter.lfs.smudge=git-lfs smudge -- %f
file:C:/Program Files/Git/etc/gitconfig	filter.lfs.process=git-lfs filter-process
file:C:/Program Files/Git/etc/gitconfig	filter.lfs.required=true
file:C:/Program Files/Git/etc/gitconfig	http.sslbackend=openssl
file:C:/Program Files/Git/etc/gitconfig	http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
file:C:/Program Files/Git/etc/gitconfig	core.autocrlf=true
file:C:/Program Files/Git/etc/gitconfig	core.fscache=true
file:C:/Program Files/Git/etc/gitconfig	core.symlinks=true
file:C:/Program Files/Git/etc/gitconfig	pull.rebase=true
file:C:/Program Files/Git/etc/gitconfig	credential.helper=manager
file:C:/Program Files/Git/etc/gitconfig	credential.https://dev.azure.com.usehttppath=true
file:C:/Program Files/Git/etc/gitconfig	init.defaultbranch=master
file:C:/Users/REDACTED/.gitconfig	user.email=REDACTED
file:C:/Users/REDACTED/.gitconfig	user.name=REDACTED
file:C:/Users/REDACTED/.gitconfig	push.autosetupremote=true
file:C:/Users/REDACTED/.gitconfig	pull.rebase=true
file:C:/Users/REDACTED/.gitconfig	filter.lfs.smudge=git-lfs smudge -- %f
file:C:/Users/REDACTED/.gitconfig	filter.lfs.process=git-lfs filter-process
file:C:/Users/REDACTED/.gitconfig	filter.lfs.required=true
file:C:/Users/REDACTED/.gitconfig	filter.lfs.clean=git-lfs clean -- %f
file:C:/Users/REDACTED/.gitconfig	core.editor=nvim


------------
Diagnostic: Credential storage
Skipped: False
Success: True
Exception: None
Log:
ICredentialStore instance is of type: CredentialStore
Writing test credential... OK
Reading test credential... OK
Deleting test credential... OK

------------
Diagnostic: Microsoft authentication (AAD/MSA)
Skipped: False
Success: True
Exception: None
Log:
Broker is not enabled.
Flow type is: Auto
Gathering MSAL token cache data... OK
CacheDirectory: C:\Users\REDACTED\AppData\Local\.IdentityService
CacheFileName: msal.cache
CacheFilePath: C:\Users\REDACTED\AppData\Local\.IdentityService\msal.cache
Creating cache helper... OK
Verifying MSAL token cache persistence... OK

------------
Diagnostic: GitHub API
Skipped: False
Success: True
Exception: None
Log:
Using 'https://github.com/' as API target.
Querying '/meta' endpoint... OK
@Dimension4 Dimension4 added the auth-issue An issue authenticating to a host label Aug 14, 2024
@Willisplayed

This comment was marked as abuse.

@Willisplayed

This comment has been minimized.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auth-issue An issue authenticating to a host
Projects
None yet
Development

No branches or pull requests

2 participants