~beuno/loggerhead/bzr-search_integration

246 by Martin Albisetti
* Start integration with bzr-search
1
import sets
2
import os
3
from configobj import ConfigObj
4
from bzrlib.plugins.search import errors
5
from bzrlib.plugins.search import index as _mod_index
6
from bzrlib.plugins.search.index import FileTextHit, RevisionHit
7
from bzrlib.transport import get_transport
8
from bzrlib.plugin import load_plugins
9
load_plugins()
10
11
def search_revisions(query_list=[]):
12
    #This is terribly stupid, you should pass on the location of the branch
13
    absfolder = '/home/beuno/bzr_devel/bzr.garbage'
14
    trans = get_transport(absfolder)
15
    index = _mod_index.open_index_url(trans.base)
16
    query = [(query_item,) for query_item in query_list]
17
    revid_list = []
18
    for result in index.search(query):
19
        if isinstance(result, FileTextHit):
20
            revid_list.append(result.text_key[1])
21
        elif isinstance(result, RevisionHit):
22
            revid_list.append(result.revision_key)
23
24
    if len(revid_list) == 0:
25
        raise errors.NoMatch(query_listo)
26
27
    return list(sets.Set(revid_list))