As someone who has developed a product that will let you search a Git repository, I can say there is a lot of moving parts. And I can see why Bitbucket, GitHub, and others don't support it. Working at their scale does present a lot of challenges.
The biggest challenge is knowing what to consider and I solve this by enforcing a context for every search. For example, if I know you are looking at 7 different branches, as the image below shows:
Searching code presents a unique challenge since your code base is constantly changing. And without the user giving you hints about what to consider, you'll just end up generating a lot of noise.
Another example of how context simplifies things, is in the image below, I know you are looking at a tree
When searching code, you really can't guess what is important or not since what mattered in the morning may not in the evening. You really need the user to guide you and as you can see in my screenshots, I had to implement a new way of exploring Git. The current way of browsing one repository at a time will not work in a lot of enterprise environments since a product is usually a combination of branches from different repositories from different time lines.
The biggest challenge is knowing what to consider and I solve this by enforcing a context for every search. For example, if I know you are looking at 7 different branches, as the image below shows:
http://i.imgur.com/L7aHr2r.png
I will only consider these branches when you do a search.
http://i.imgur.com/JYHgB6I.png
Searching code presents a unique challenge since your code base is constantly changing. And without the user giving you hints about what to consider, you'll just end up generating a lot of noise.
Another example of how context simplifies things, is in the image below, I know you are looking at a tree
http://i.imgur.com/l8Y0oLA.png
so I will only search that tree
http://i.imgur.com/CIxHPjr.png
When searching code, you really can't guess what is important or not since what mattered in the morning may not in the evening. You really need the user to guide you and as you can see in my screenshots, I had to implement a new way of exploring Git. The current way of browsing one repository at a time will not work in a lot of enterprise environments since a product is usually a combination of branches from different repositories from different time lines.