web-dev-qa-db-fra.com

Exécuter des commandes git sur Debian et Ubuntu sur WSL est vraiment lent pour les grands projets

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?

6
MortenMoulder

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.

1
jepster

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
0
LeGEC

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 

  • VirtualBoxed Fedora sans interface graphique est le plus rapide
  • Defender est cher. Excluez votre racine de travail git.
  • n'a trouvé aucune différence pratique si le répertoire de travail WSL git était sous ~ ou/c/mnt

S'il vous plaît n'hésitez pas à répéter le petit test.

0
weberjn