git status ist nur auf einem Computer wirklich langsam

Unsere Organisation hat etwa ein Dutzend Entwickler mit demselben Computermodell als Arbeitsstation (Dell XPS 15 9570), die alle Windows 10 verwenden. Wir arbeiten mit einem großen Git-Repository (ca. 60.000 Dateien, 10 GB).

Auf allen Computern außer meinem dauert das Ausführen von git status in Git Bash etwa 300 ms. Auf meinem Computer dauert es etwa 1600 ms:

$ time git status
...
real    0m1.592s
user    0m0.000s
sys     0m0.015s

Ich habe winsat disk -drive c auf meinem Computer ausgeführt und die Ergebnisse mit ein paar anderen in meiner Umgebung verglichen, aber es gab keine signifikante Abweichung zwischen den Ergebnissen.

Das Ausführen im abgesicherten Modus bringt es auf etwa 1100 ms herunter. Das Ausführen als Administrator macht keinen Unterschied. Das Ausführen in verschiedenen Terminals (cmd, cmder) macht keinen Unterschied. Keiner von uns verwendet spärliche Kassen. git gc macht keinen Unterschied. Wir haben alle die neuesten Updates, Firmware usw. für unsere Rechner.

Was kann ich tun, um mit den anderen Rechnern gleichzuziehen? Ich weiß, dass ich git status so einstellen kann, dass ich nur in bestimmten Ordnern nachsehe, um die Zeit auf fast nichts zu reduzieren, aber ich suche nach der Hauptursache für den Zeitunterschied. Gibt es etwas Bestimmtes, das ich messen oder bewerten sollte, um die Ursache für die Verlangsamung einzugrenzen?

  • Wie lange dauert dir /s > nul oder find -ls > /dev/null, aus Neugierde? Verwenden Sie natives Windows Git (msysgit) oder Cygwin Git oder WSL Git? Wie groß ist Ihre .git/index-Datei? Haben Sie irgendwelche Unterschiede im git config -l zu Ihren Kollegen? Haben Sie irgendwelche Wisch-/Sauberkeitsfilter konfiguriert?
  • Wenn Sie das Verzeichnis neu klonen (git clone ssh/https-location foldername), ist das Verhalten dasselbe? Sie können ein lokales Git-Repository in einen chaotischen Zustand bringen, aus dem die Wiederherstellung schwierig ist. Es wäre also gut zu wissen, ob dies ein Problem mit Ihrem Rechner oder der spezifischen Kopie des Repositorys ist, die Sie haben.
  • dir /s > nul dauert 2300 ms. Mein git --version ist 2.19.1.windows.1. Mein .git/index ist 8,1 MB. Ich habe keine Wisch-/Sauberkeitsfilter. Ich werde nach Unterschieden im git config -l suchen.
  • Ist die Indexdatei auch auf den Systemen Ihrer Mitarbeiter und/oder auf einem frisch geklonten Repository ähnlich groß?
  • Ich habe eine SSD, aber auf jeden Fall defrag c: /A zeigt 43 % gesamten fragmentierten Speicherplatz an.
  • auf den Systemen von Kollegen sowie einem frisch geklonten Repo sind es 8,1 MB.
  • ein neuer Klon scheint viel schneller zu sein, etwa 450 ms. Ich habe es mit git clean -xdf auf dem Original-Repo versucht, aber der ist immer noch langsam. Jetzt, wo ich einen schnellen Klon habe, gibt es irgendwelche Unterschiede, die ich zwischen den beiden überprüfen sollte?
  • Sieht aus, als hätte sich fscache = false in die Konfiguration des langsamen Repos eingeschlichen. Ich habe das herausgenommen und es ist wieder schön schnell.
  • Cool, ich bin froh, dass es etwas war, das leicht zu ändern war. Bei mir sind die Dateien im .git-Ordner so durcheinander geraten, dass es einfacher war, einfach neu zu beginnen. Ich vermute, dass fscache in .git/config eingestellt war?
  • Da Ihre Idee das Problem löste, konnten Sie eine Antwort schreiben.

OriginalAutor Jeff | 2019-05-17

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.