Show More
@@ -41,6 +41,7 b' sys.path.append(project_path)' | |||||
41 |
|
41 | |||
42 | from rhodecode.config.conf import INDEX_EXTENSIONS |
|
42 | from rhodecode.config.conf import INDEX_EXTENSIONS | |
43 | from rhodecode.model.scm import ScmModel |
|
43 | from rhodecode.model.scm import ScmModel | |
|
44 | from rhodecode.model.db import Repository | |||
44 | from rhodecode.lib.utils2 import safe_unicode, safe_str |
|
45 | from rhodecode.lib.utils2 import safe_unicode, safe_str | |
45 | from rhodecode.lib.indexers import SCHEMA, IDX_NAME, CHGSETS_SCHEMA, \ |
|
46 | from rhodecode.lib.indexers import SCHEMA, IDX_NAME, CHGSETS_SCHEMA, \ | |
46 | CHGSET_IDX_NAME |
|
47 | CHGSET_IDX_NAME | |
@@ -98,17 +99,29 b' class WhooshIndexingDaemon(object):' | |||||
98 | self.initial = True |
|
99 | self.initial = True | |
99 | if not os.path.isdir(self.index_location): |
|
100 | if not os.path.isdir(self.index_location): | |
100 | os.makedirs(self.index_location) |
|
101 | os.makedirs(self.index_location) | |
101 | log.info('Cannot run incremental index since it does not' |
|
102 | log.info('Cannot run incremental index since it does not ' | |
102 |
' |
|
103 | 'yet exist running full build') | |
103 | elif not exists_in(self.index_location, IDX_NAME): |
|
104 | elif not exists_in(self.index_location, IDX_NAME): | |
104 | log.info('Running full index build as the file content' |
|
105 | log.info('Running full index build as the file content ' | |
105 |
' |
|
106 | 'index does not exist') | |
106 | elif not exists_in(self.index_location, CHGSET_IDX_NAME): |
|
107 | elif not exists_in(self.index_location, CHGSET_IDX_NAME): | |
107 | log.info('Running full index build as the changeset' |
|
108 | log.info('Running full index build as the changeset ' | |
108 |
' |
|
109 | 'index does not exist') | |
109 | else: |
|
110 | else: | |
110 | self.initial = False |
|
111 | self.initial = False | |
111 |
|
112 | |||
|
113 | def _get_index_revision(self, repo): | |||
|
114 | db_repo = Repository.get_by_repo_name(repo.name) | |||
|
115 | landing_rev = 'tip' | |||
|
116 | if db_repo: | |||
|
117 | landing_rev = db_repo.landing_rev | |||
|
118 | return landing_rev | |||
|
119 | ||||
|
120 | def _get_index_changeset(self, repo): | |||
|
121 | index_rev = self._get_index_revision(repo) | |||
|
122 | cs = repo.get_changeset(index_rev) | |||
|
123 | return cs | |||
|
124 | ||||
112 | def get_paths(self, repo): |
|
125 | def get_paths(self, repo): | |
113 | """ |
|
126 | """ | |
114 | recursive walk in root dir and return a set of all path in that dir |
|
127 | recursive walk in root dir and return a set of all path in that dir | |
@@ -116,8 +129,8 b' class WhooshIndexingDaemon(object):' | |||||
116 | """ |
|
129 | """ | |
117 | index_paths_ = set() |
|
130 | index_paths_ = set() | |
118 | try: |
|
131 | try: | |
119 |
|
|
132 | cs = self._get_index_changeset(repo) | |
120 |
for _topnode, _dirs, files in |
|
133 | for _topnode, _dirs, files in cs.walk('/'): | |
121 | for f in files: |
|
134 | for f in files: | |
122 | index_paths_.add(jn(safe_str(repo.path), safe_str(f.path))) |
|
135 | index_paths_.add(jn(safe_str(repo.path), safe_str(f.path))) | |
123 |
|
136 | |||
@@ -128,7 +141,8 b' class WhooshIndexingDaemon(object):' | |||||
128 |
|
141 | |||
129 | def get_node(self, repo, path): |
|
142 | def get_node(self, repo, path): | |
130 | n_path = path[len(repo.path) + 1:] |
|
143 | n_path = path[len(repo.path) + 1:] | |
131 | node = repo.get_changeset().get_node(n_path) |
|
144 | cs = self._get_index_changeset(repo) | |
|
145 | node = cs.get_node(n_path) | |||
132 | return node |
|
146 | return node | |
133 |
|
147 | |||
134 | def get_node_mtime(self, node): |
|
148 | def get_node_mtime(self, node): | |
@@ -222,7 +236,8 b' class WhooshIndexingDaemon(object):' | |||||
222 | :param repo: instance of vcs repo |
|
236 | :param repo: instance of vcs repo | |
223 | """ |
|
237 | """ | |
224 | i_cnt = iwc_cnt = 0 |
|
238 | i_cnt = iwc_cnt = 0 | |
225 |
log.debug('building index for |
|
239 | log.debug('building index for %s @revision:%s' % (repo.path, | |
|
240 | self._get_index_revision(repo))) | |||
226 | for idx_path in self.get_paths(repo): |
|
241 | for idx_path in self.get_paths(repo): | |
227 | i, iwc = self.add_doc(file_idx_writer, idx_path, repo, repo_name) |
|
242 | i, iwc = self.add_doc(file_idx_writer, idx_path, repo, repo_name) | |
228 | i_cnt += i |
|
243 | i_cnt += i | |
@@ -276,7 +291,7 b' class WhooshIndexingDaemon(object):' | |||||
276 | repo_name, repo, start_id) |
|
291 | repo_name, repo, start_id) | |
277 | writer_is_dirty = True |
|
292 | writer_is_dirty = True | |
278 | log.debug('indexed %s changesets for repo %s' % ( |
|
293 | log.debug('indexed %s changesets for repo %s' % ( | |
279 |
|
|
294 | indexed_total, repo_name) | |
280 | ) |
|
295 | ) | |
281 | finally: |
|
296 | finally: | |
282 | if writer_is_dirty: |
|
297 | if writer_is_dirty: | |
@@ -284,7 +299,6 b' class WhooshIndexingDaemon(object):' | |||||
284 | writer.commit(merge=True) |
|
299 | writer.commit(merge=True) | |
285 | log.debug('>>> FINISHED REBUILDING CHANGESET INDEX <<<') |
|
300 | log.debug('>>> FINISHED REBUILDING CHANGESET INDEX <<<') | |
286 | else: |
|
301 | else: | |
287 | writer.cancel |
|
|||
288 | log.debug('>> NOTHING TO COMMIT TO CHANGESET INDEX<<') |
|
302 | log.debug('>> NOTHING TO COMMIT TO CHANGESET INDEX<<') | |
289 |
|
303 | |||
290 | def update_file_index(self): |
|
304 | def update_file_index(self): |
General Comments 0
You need to be logged in to leave comments.
Login now