2

いくつかの Gitolite リポジトリには、たくさんの git プロジェクトがあります。Gitolite リポジトリに含まれるソースをキーワードで検索する方法はありますか?

最初にすべての git プロジェクトを手動でローカルに複製することなく、キーワードですべての git プロジェクトを検索できるようにしたいと考えています。Jenkins によってビルドされたプロジェクトの場合、ソースは検索可能なディレクトリに公開されます。しかし、現在、それらのすべてがこの方法で構築されているわけではありません。

4

3 に答える 3

1

私がメールした元同僚は、これを行う方法を知っていました。リポジトリが保存されているマシンで、プロジェクトを含むリポジトリ ディレクトリに移動します。個々のプロジェクトの .git ディレクトリ内では、HEAD またはブランチで「git grep」を使用できます。すべてのディレクトリを検索するには、プロジェクト ディレクトリのディレクトリからループを使用します。

for x in *; do
  cd $x
  git grep "MyString" HEAD
  cd ..
done

各一致を含むプロジェクトの名前を含む、より多くのオプションの例:

for x in *; do
  cd $x
  git grep -i "mystring" HEAD -- '*.java' | sed "s|\(.*\)|$x-->\1|"
  cd ..
done
于 2012-12-03T20:32:43.117 に答える
0

Gitolite は単なる承認レイヤーであり、以下を傍受します。

  • git コマンド
  • ユーザーID

、そして git コマンドの続行を許可するかどうかを決定します。

検索機能自体とは何の関係もありません。

Elasticsearch など、検索自体を git リポジトリに実装するには、別のアプリが必要です。「 ElasticSearch を使用した git リポジトリの検索
」を参照してください。

次に、それを gitolite と組み合わせることができます (gitolite アクセス ルールに応じて、検索を許可するか、検索結果をフィルタリングするため)。

于 2012-11-29T20:07:31.810 に答える
0

まあ、いつでも「grep」コマンドを作成できます。結局のところ、「symbolic-ref」を実行できる場合、grep は何ですか?

1 つの問題は、許可された文字に対する gitolite の制限により、提供されている任意の正規表現が窮屈になることです。(もし誰かが本当に、本当にこれを望んでいるなら - つまり、彼らがメーリングリストで質問し、少なくともあと数人が「はい、欲しい!」と声を上げてくれることを意味します)、私はいくつかのプログラムを許可する方法を作成できます。無制限の引数があります。そのコードは「git-annex」ブランチから取り出されるのを待っているだけですが、これまでのところテストへの愛はありません)。

複数のプロジェクトを検索するようにすることもできます。たとえば、ユーザーが読み取りアクセス権を持っているすべてのプロジェクトを検索するようにするには、次のように開始できます。

gitolite list-phy-repos | gitolite access % $GL_USER W any | grep -v DENIED | cut -f1

そして、思いついたレポごとに、それにcdして「git grep」を実行します

複雑さの次の段階は、検索する/検索しないリポジトリのリストです (たまたますべてのリポジトリにアクセスできる人であり、それは実際には望んでいないからです!)。これは、効果的に設計するのが少し難しくなります。ある種のグループ名を使用して、conf ファイル自体で検索可能なリポジトリをマークする方が簡単な場合があります。grep コマンドは、追加の制約として、その特別なグループのメンバーシップを簡単に確認できます。

シタラム

于 2012-12-23T14:50:52.877 に答える