Magitはファイルのコミットに非常に時間がかかります。他のタスクと絶対に不均衡です - 数分かかるかもしれません。そうでなければ、私はあきらめてシェルからコミットします。何か理由はありますか?どうすればデバッグできますか?興味深いことに、私が*magit-process*
バッファ(gitプロセスとやり取りしなければならないもの)をkillしてから、タスクを続行すると、すべてが動作します。しかし、そのバッファにエラーメッセージはなく、コマンド自体です。WindowsでコミットするときMagitが非常に遅い
答えて
M-xは
の変更をあなたのgitの実行可能ファイルへのフルパスに値をRET magit-gitの実行RET-VARのカスタマイズ。たとえば私はmineをc:/cygwin/bin/git.exeに設定します。私がそれをする前は、魔法は痛いほど遅かった...今はちょっと遅いです。
これは実際にOS Xでも私を助けてくれました。私はgitをハブコマンドとして包むoh-my-zshバンドルでzshとzshのgithubプラグインを使用していました。 – ustun
git.exeパスを追加するだけでは、magitのスピードがあまり向上しませんでした。
最良の方法は、[1]
(if (eq system-type 'windows-nt)
(progn
(setq exec-path (add-to-list 'exec-path "C:/Program Files (x86)/Git/bin"))
(setenv "PATH" (concat "C:\\Program Files (x86)\\Git\\bin;" (getenv "PATH")))))
EXECパスがMagitために重要である、のsetenvをESHELLにより使用され、次の構成を持つすべてのgit関連コマンドパスを追加です。
私の環境(Windows 7 x64)では、magit-statusのコストは1〜2分ではなく約2秒です。
[1] https://lists.gnu.org/archive/html/emacs-devel/2012-05/msg00269.html
それが原因で、それが書かれているとWindowsがプロセスを開始するには、UNIXシステムよりもわずかに遅いという方法を組み合わせて遅いです。
Magitは、同期プロセスに大きく依存し、ステータスページを表示します。ここで私は、単一のstage-item
実行から構築され、いくつかの出力があります:
magit-cmd-output git.exe (--no-pager symbolic-ref -q HEAD) (0 1 153000 0) {refs/heads/master}
magit-cmd-output git.exe (--no-pager config branch.master.remote) (0 1 149000 0) {}
magit-cmd-output git.exe (--no-pager config --bool branch.master.rebase) (0 1 155000 0) {}
magit-cmd-output git.exe (--no-pager config branch.master.merge) (0 1 155000 0) {}
magit-cmd-output git.exe (--no-pager log --max-count=1 --abbrev-commit --abbrev=7 --pretty=oneline) (0 1 168000 0) {}
magit-cmd-output git.exe (--no-pager stash list) (0 2 831000 0) {}
magit-cmd-output git.exe (--no-pager config status.showUntrackedFiles) (0 1 177000 0) {}
magit-cmd-output git.exe (--no-pager ls-files --others -t --exclude-standard) (0 1 195000 0) {? thehangover.jpg? tugofwar.jpg? tugogwar.jpg? typists.jpg}
magit-cmd-output git.exe (--no-pager diff-files) (0 1 158000 0) {}
magit-cmd-output git.exe (--no-pager mktree) (0 1 157000 0) {4b825dc642cb6eb9a060e54bf8d69288fbee4904}
magit-cmd-output git.exe (--no-pager diff-index --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904) (0 1 156000 0) {:000000
(注意:これはすでに最適化されて、私は最悪冗長呼び出しを削除しました)。
ここでは、magitがそれぞれの引数セットに対してgitを呼び出していることが分かります.1秒と非常に多くのマイクロ秒を要しています。最悪の場合(stash list
)、ほぼ3秒です。それはすべて加算され、非常に遅くなります。
おそらく、これらのコールの多くはキャッシュされている可能性があります。しかし、困難なことは、それらをキャッシュしないときです。それはうまくいくためには魔法に多くの変更が必要です。
もう一度バッチ処理する方法がありますので、すばやく処理できますか?多分。今はそんなことは考えられない。おそらく特別なgit実行可能ファイルがそれを利用可能にするでしょうか?
この呼び出しをどのようにプロファイルしましたか? Windowsでmagitを使ってほとんど何もするのに30秒以上かかるので、何が遅いのか見たいと思っています。 –
- 1. TortoiseHGのコミットは非常に遅い
- 2. ApacheがWindowsサーバで応答するのが非常に遅い
- 3. Windows7ではWindowsフォームが非常に遅いですか?
- 4. session_startは非常に遅いですが(ときどきのみ)
- 5. WebClientが非常に遅い
- 6. ApacheBenchが非常に遅い
- 7. Image.FromFileが非常に遅い
- 8. ウェブサイトが非常に遅い
- 9. WCFが非常に遅い
- 10. GetHostEntryが非常に遅い
- 11. コミット後のSVNコミットが非常に遅くなります - 修正方法?
- 12. メッセージサイズが大きいとsocketchannel.write()が非常に遅くなる
- 13. クエリが非常に遅いです。
- 14. HTTPプロキシサーブレットが非常に遅いです
- 15. FFMPEGが非常に遅いです
- 16. 非常に遅い
- 17. Windows 7のフォルダエクスプローラの検索が非常に遅い
- 18. Mac/OSXでGitが非常に遅い
- 19. リモートデータベース(PostgreSQL)でHibernateが非常に遅い
- 20. forEachFeatureatPixelでFirefoxが非常に遅い
- 21. INでpostgresクエリが非常に遅い
- 22. Windowsでシステムプリンタ名のリストを取得するのが非常に遅い
- 23. Unity3D - エディタでは非常に遅いが、ビルドは非常に良いゲームです。
- 24. 非常に遅いWindowsでのjrubyのrspecテスト
- 25. 多数の行を扱うとき、TMemoが非常に遅い
- 26. Magitチェックアウトの塊/コミットHEADに塊
- 27. NodeJsウェブサイトTTFBが非常に高く、サイトが非常に遅いです
- 28. イオンリリースされたアプリは非常に遅く、非常に遅れています(デバイスでは遅いです)
- 29. OpenMPでは非常に遅いです
- 30. MVC3 - 大きなファイルでHttpPostedFileBaseを使用すると、RedirectToActionが非常に遅い
私は何かタイムアウトしていると思うかもしれませんが、潜在的にあなたが開いているバッファの数で乗算されるかもしれません。これについての未解決の問題)、これはそうでなければ魔法が速くても非常に目立つことがあります。 Emacsの新しいインスタンスで最低限のバッファを開いてテストを繰り返すことは価値があるかもしれません。 – phils
私は分については分かりませんが、間違いなく窓にmagitが間違っています。これは、非同期と関係があると思われる。私はそれをプロファイリングし、私は非常に奇妙な結果を得ています。私はそれを修正できるまで私は見ていきます。 –
私はそれを少しだけプロファイリングしました...それは、magitがgit *で多くの*プロセスファイル(同期している)を呼び出しているようです。それは非常に遅くなります。特に、ファイルの単一の隠し文字に対して5回rev-parseを呼び出します。それは過度に思える。 –