2017-06-18 15 views
1

私はいくつかのサブモジュールでgitリポジトリを手に入れました。私のLinux Mint 18 Sarahではすべてがスピードライトとして高速ですが、私のWindows 10ビルド15063では恐ろしいパフォーマンスを得ました。なぜWindows上のブランチチェックアウトが遅いのですか?しかし、Linuxではとても速いのですか?

私はtestブランチにチェックアウトを行うことができますSmartgitクライアントを使用して、WindowsとLinuxの両方が、Windowsマシン上でプロセスを終了する3分のようになります:

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 

そうでない場合は、Linuxマシン上で、同じリポジトリを使用して、私は5秒のようなものでtestブランチにチェックアウトを行うことができます。

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

限り速くWindows上でGitのチェックアウトを行うことが可能ですLinuxで10?

私はこの他の質問を見つけましたが、私はそれがここに適用される場合は理解していないDIT:

  1. Git is slow on pushing submodules change to origin

更新

@derHugo解説した後、私は実行していることを見つけますWindowsのコマンドラインからgitを実行して、git checkout testと入力すると、Linuxの場合と同じくらい速くなります。

質問を変更して、Linux用のSmartgitクライアントがこの遅いことをやっている理由を尋ねる必要があります。

Windows Smartgitクライアントでこの遅いチェックアウトを無効にするにはどうすればいいですか?

+0

あなたのsmargitクライアントはチェックアウトだけでなく、git on Linuxがチェックアウト自体を実行する間、あなたのレポで再帰的フェッチをするようです。 – derHugo

+0

Gitリポジトリにアクセスするためのハードウェアと方法は同じですか? –

+0

Linuxは仮想マシンがWindowsの中で動いているのと同じテストをしました。したがって理論上、Linuxは仮想環境によって少し遅くなるはずですが、はるかに高速です。 – user

答えて

3

SmartGitは一連のgit.exeコマンドを実行しているようですが、それぞれbashセッションを起動する必要があります(新しいシェルの起動/起動が遅い)。はるかに速く、でもWindows上:
あなたがGitのbashのセッションで同じことを行う場合は、(各サブモジュールのチェックアウトのための)すべてのこれらのコマンドは、現在のシェルセッションを再利用することができ、「How are msys, msys2, and msysgit related to each other?

でより多くを参照してください。

関連する問題