13

必要なもの

git大きな ( ) リポジトリ (~9.8k ファイル)の下にあるファイルを開くための高速でパフォーマンスの高い方法。

環境

Textmate.elやなど、さまざまな解決策を試しfind-file-in-repositoryました。これらの解決策は、 thisthisなどの以前の SO の質問と、LocateFilesAnywhere EmacsWikiで見つけました。

どちらのソリューションも小規模から中規模のリポジトリではうまく機能しますが、この場合は実質的に使用できません。ファイル名の入力を開始すると、結果が表示されるまでに数秒の遅延があります。また、検索のどの部分を変更しても非常に遅延します。

emacs主な問題は、任意の文字を入力すると、 /find-file-in-repositoryがシェル コマンド ( ) を開始することだと思いますgit ls-files...。私は本当にそれをする必要があるのは、タイピングをやめたときだけです。

質問

  • このユースケースに適したライブラリはありますか?
  • そうでない場合、入力中にコマンドに遅延を導入するにはどうすればよいですか? つまり、 にいる間find-file-in-repository、入力を停止したとき (300 ミリ秒のギャップとしましょう) にのみ検索コマンドが呼び出されるようにします。
4

4 に答える 4

18

概要

3つの回答を受け取った後、それらを試してみました(上記の解決策はどれもうまくいかなかったので、自分の質問にも答えました)。私は最終的に落ち着いたhelm-ls-git。私の観点からの比較は次のとおりです。

投射物

  • レポのインデックス作成に約 30 分かかりました。projectile は を認識していないため.gitignore、実際のファイル数は 52k 程度です。
  • カスタマイズできますが、機能するもの (つまり、git を理解するもの) が望ましいです
  • キャッシュの再インデックスを時々無効にする必要があるかもしれません。新しいファイルが毎日レポに追加されるため、これはコストがかかり、頻繁に発生します。

helm-cmd-t

  • 説明とソースから良さそうに見えました。
  • メルパ/マーマレードなどに掲載されていないのでインストールが難しいです。詳細は本号で公開しました。

GNU グローバル

  • Projectile と同じ問題が発生する可能性があるため、試しませんでした (git-unaware、時々維持する必要があるかもしれない独自の「インデックス」が必要です)。

しかし、 event-jr回答により、さらにいくつかのオプションが開かれました。私はhelm今まで知りませんでした。ヘルム関連のプラグインのメルパを見ると、次のことがわかりました。

helm-git

  • これは本当に有望に見えました
  • package.elメルパなので取り付けも簡単でした
  • 私も愛用しmagitているので、これはぴったりでした。
  • しかし、それはmagit-git-dir: symbol is void一種のエラーで失敗し続けました。あまり飛び込んでいませんでしたが、更新する必要があるようです。問題を開いた

helm-ls-git

  • readme にあるように、これは Magit に依存しません。
  • これまで素晴らしい仕事をしてきました。インストール(melpa)が簡単で、高速です。
于 2013-01-16T06:34:50.377 に答える
2

これには GNU グローバルを使用します。私のプロジェクトには約 20K のファイルがあります。M-x gtags-find-file 最初の数文字を実行して入力できます 。TAB は完了し、すべての一致を表示します。ファイル名の一部である任意の文字を入力して、Enter キーを押すことができます。これらの文字を含むすべてのファイルが表示されます。

これには発射体を使用しようとしました。しかし、「プロジェクトの索引付け」には遅すぎました。1.5時間経ってもインデックス作成が完了せず、強制終了する必要があります!. ここで何かが間違っているかどうかはわかりません。GNU グローバルははるかに高速で、タグの作成全体を 15 分以内に完了します。

于 2013-01-15T06:48:42.190 に答える
1

helm-cmd-t楽しく使っています。ファイルリストをメモリにキャッシュします。キャッシュ コントロールは、私のニーズに十分柔軟です。

ここで新しいレポアドレスに関するあなたの質問に答えました:

https://stackoverflow.com/a/8025310/903943

https://github.com/lewang/helm-cmd-tです

于 2013-01-14T07:03:58.833 に答える
1

Projectileを確認できます。基本的には に似たものを提供するために作成されましC-pたが、追加のプロジェクト レベルの機能も多数あります。このような大きなプロジェクトでは、最初のプロジェクトのインデックス作成はかなり遅くなりますが、その後、Projectile はプロジェクト ファイルを (メモリとハード ドライブの両方に) キャッシュし、その後の Projectile の呼び出しはほぼ瞬時に行われます。

Projectile には、Helm でプロジェクト ファイルとバッファを表示する Helm プラグインもあります。

于 2013-01-14T07:25:53.280 に答える