Searching a git repository with ElasticSearch

We are thinking about using gitlabhq for some of our internal repositories.

But then it would be cool to be able to do some full text searches on the code as well as on commit messages, tags etc..

So I wrote a quick and very dirty proof of concept (Ruby) to search a git repository through elastic search (which in its own right is extremely cool, and we should write a big article about it soon).

  • uses the grit and tire gems, please notice that grit is self hosted on github

Note: as per default Grit behaviour it gets the current master but its trivial to have it index other stuff.

Note to self: Could be useful with gitlabhq


bundle install

You should have a local elastic search running.


# Inits with a full path to a local git repository
repo_index ="/Users/git/repositories/gitlabhq.git")  
# Inits elastic search index       
# Indexes the repo                 

To search the code: repo_index.index_name do
   query do
     string 'mysearchterm'

You can look at example.rb to see the full example


Well basically everything, but let's start with writing some tests and then different branches, adding the commit messages, make elastic search configurable and other fun stuff

Please remember : this is a very quick and a very dirty implementation.


BSD Copyright Ori Pekelman, AF83 2011

blog comments powered by Disqus