2017-06-18 1 views
1

J'ai reçu un dépôt git avec plusieurs sous-modules et j'ai eu des performances horribles sur mon Windows 10 build 15063, alors que sur ma Linux Mint 18 Sarah tout est rapide comme le speed light.Pourquoi la commande de succursale sur Windows est-elle si lente, mais sur Linux si rapide?

deux sous Windows et Linux en utilisant le client Smartgit, où je peux faire la caisse sur une branche test, mais prend comme 3 minutes pour terminer le processus sur la machine Windows:

Check Out Branch 
    D:\SublimeText\Data\Packages> git.exe checkout test 
    Switched to branch 'test' 
    D:\SublimeText\Data\Packages\Default Syntax> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Force Rewrite Sublime Settings> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Side-by-Side Settings> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Overwrite Commit Completion> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Sublime Text Studio> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\MarkdownLight> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Fixed Selections Clear> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\SublimeCodeIntel> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Open Auto Completion> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\amxmodx> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Shell Script> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Notepad++ Color Scheme> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\LaTeXTools> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\.versioning> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Toolbar> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\BBCode> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Select All Spelling Errors> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Markdown to BB Code Converter> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\All Autocomplete> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Package Control> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\AutoFileName> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\SQL Keyword Uppercase> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Fix Project Switch Restart Bug> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Indent and braces> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Override Unpacked Packages> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\GotoLastEditEnhanced> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\PowerCursors> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\FuzzyFilePath> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Clear Cursors Carets> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\ANSIescape> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Preferences Editor> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\BufferScroll> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\PackageDev> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Clipboard Scope Copy> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\SideBarEnhancements> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\View Settings Freely> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Fix Selection After Indent> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Amxx Pawn> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\SublimeREPL> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\SyncedSideBar> git.exe fetch --progress --prune --recurse-submodules=no origin 
    D:\SublimeText\Data\Packages\Active View Jump Back> git.exe fetch --progress --prune --recurse-submodules=no origin 

Sinon sur la machine Linux , en utilisant le même référentiel, je peux faire la caisse sur une branche test quelque chose comme 5 secondes:

Check Out Branch 
    ~/.config/sublime-text-3/Packages> git checkout test_linux 
    Switched to branch 'test' 

Est-il possible de faire l'achat git sous Windows aussi vite que le git checkout sur Linux?

Je trouve cette autre question, mais je dit comprends pas si elle applique ici:

  1. Git is slow on pushing submodules change to origin

Mise à jour

Après @derHugo commentaires, je trouve que courir git à partir de la ligne de commande sur Windows et en tapant git checkout test est aussi rapide que sur Linux.

Maintenant je devrais changer la question et demander pourquoi le client de Smartgit pour Windows fait cette chose lente, tandis que le Linux, ne fait pas.

Comment puis-je désactiver cette vérification lente sur le client Windows Smartgit et quelles en seront les conséquences?

+0

Il semble que votre client smargit effectue non seulement l'extraction, mais aussi une récupération récurrente sur votre repo alors que git sur linux n'effectue que l'extraction elle-même. – derHugo

+0

Le matériel et la méthode d'accès au référentiel Git sont-ils identiques? –

+0

Le Linux est une machine virtuelle qui s'exécute dans Windows J'ai fait les mêmes tests. Donc, en théorie, le Linux devrait être un peu plus lent par l'environnement virtuel, mais c'est beaucoup plus rapide. – user

Répondre

3

SmartGit semble exécuter une série de commandes git.exe, chacune devant engendrer une session bash (la génération/démarrage d'un nouveau shell est lente).
Voir plus à « How are msys, msys2, and msysgit related to each other? »

Si vous faites la même chose dans une session bash git, toutes les commandes (pour chaque achat de sous-module) peuvent réutiliser la session en cours du shell: beaucoup plus rapide, même sous Windows.