Nous avons un très grand projet avec près de 15 000 commits au total. J'exécute Debian 9.3
sur mon ordinateur Windows à l'aide de WSL. Ma version de git est 2.17.0
.
Lorsque j'exécute des commandes telles que git status
, cela prend au moins 20 secondes. Même si aucun changement n'a été fait.
J'ai essayé plusieurs versions plus anciennes de Git et même Ubuntu, mais je rencontre toujours le même résultat. J'ai essayé d'exécuter une série de commandes à partir de divers messages ici et sur d'autres sites, mais aucune d'entre elles n'a fonctionné.
Chose amusante: quand j'ouvre cmd.exe
ou Git Bash sous Windows, il faut moins d'une seconde pour exécuter git status
.
Qu'est-ce qui peut causer cela? Que puis-je faire pour résoudre ce problème?
Dans mon WSL avec Ubuntu, je constate que la toute première commande "git status" est beaucoup plus lente que la seconde. Une mise en cache ou une indexation est probablement effectuée lors de la première exécution. La seconde vitesse "git status" me convient.
Vous pouvez avoir quelques détails de profilage en utilisant le GIT_TRACE_PERFORMANCE
env var:
$ GIT_TRACE_PERFORMANCE=1 git status -sb -uno
08:51:54.525808 read-cache.c:1889 performance: 0.000330659 s: read cache .git/index
08:51:54.528532 preload-index.c:112 performance: 0.002669928 s: preload index
08:51:54.528667 read-cache.c:1447 performance: 0.000109768 s: refresh index
08:51:54.528892 diff-lib.c:250 performance: 0.000056516 s: diff-files
08:51:54.534630 diff-lib.c:527 performance: 0.005070461 s: diff-index
## wip/foo
08:51:54.536419 trace.c:420 performance: 0.013503141 s: git command: git status -sb -uno
A couru
time git clone https://github.com/git/git.git
et
time git clone git git.1
sur Thinkpad T460s dans WSL actuel, MSYS2 et Fedora 28 en boîte virtuelle (sans interface graphique, PuTTY).
Les temps réels pour le clone local étaient
Fedora 3s, WSL 67s, MSYS2 65s
Après avoir désactivé Defender, le temps passe à
WSL 11s, MSYS2 13s
Alors
S'il vous plaît n'hésitez pas à répéter le petit test.