Mercurial > public > src > rhodecode
changeset 740:341beaa9edba beta
Implemented whoosh index building as paster command.
docs update
fixed manifest.in for missing yui file.
Fixed setup to beta
added base for paster upgrade-db command
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 13 Nov 2010 02:29:46 +0100 |
parents | 23c2a0e6df0b |
children | 2abb398cd9a7 |
files | MANIFEST.in development.ini docs/changelog.rst docs/setup.rst production.ini rhodecode/config/deployment.ini_tmpl rhodecode/lib/indexers/__init__.py rhodecode/lib/indexers/daemon.py setup.cfg setup.py |
diffstat | 10 files changed, 57 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/MANIFEST.in Sat Nov 13 00:23:36 2010 +0100 +++ b/MANIFEST.in Sat Nov 13 02:29:46 2010 +0100 @@ -7,7 +7,7 @@ recursive-include rhodecode/public/css * recursive-include rhodecode/public/images * #js -include rhodecode/public/js/yui2.js +include rhodecode/public/js/yui2a.js include rhodecode/public/js/excanvas.min.js include rhodecode/public/js/yui.flot.js include rhodecode/public/js/graph.js
--- a/development.ini Sat Nov 13 00:23:36 2010 +0100 +++ b/development.ini Sat Nov 13 02:29:46 2010 +0100 @@ -43,6 +43,7 @@ static_files = true lang=en cache_dir = %(here)s/data +index_dir = %(here)s/data/index #################################### ### BEAKER CACHE ####
--- a/docs/changelog.rst Sat Nov 13 00:23:36 2010 +0100 +++ b/docs/changelog.rst Sat Nov 13 02:29:46 2010 +0100 @@ -17,6 +17,7 @@ - introduced new enhanced changelog for merges that shows more accurate results - gui optimizations, fixed application width to 1024px - numerous small bugfixes +- whoosh index moved to paster command 1.0.2 (**2010-11-12**) ----------------------
--- a/docs/setup.rst Sat Nov 13 00:23:36 2010 +0100 +++ b/docs/setup.rst Sat Nov 13 02:29:46 2010 +0100 @@ -41,21 +41,40 @@ remember to update these if needed. -Setting up Whoosh ------------------ +Setting up Whoosh full text search +---------------------------------- + +Index for whoosh can be build starting from version 1.1 using paster command +passing repo locations to index, as well as Your config file that stores +whoosh index files locations. There is possible to pass `-f` to the options +to enable full index rebuild. Without that indexing will run always in in +incremental mode. + +:: + paster make-index --repo-location=<location for repos> production.ini + +for full index rebuild You can use + +:: + paster make-index -f --repo-location=<location for repos> production.ini - For full text search You can either put crontab entry for +This command can be run even from crontab in order to do periodical +index builds and keep Your index always up to date. An example entry might +look like this + :: - python /var/www/rhodecode/<rhodecode_installation_path>/lib/indexers/daemon.py incremental <put_here_path_to_repos> + /path/to/python/bin/paster --repo-location=<location for repos> /path/to/rhodecode/production.ini -When using incremental mode whoosh will check last modification date of each file -and add it to reindex if newer file is available. Also indexing daemon checks -for removed files and removes them from index. Sometime You might want to rebuild -index from scrach, in admin pannel You can check `build from scratch` flag -and in standalone daemon You can pass `full` instead on incremental to build -remove previos index and build new one. +When using incremental(default) mode whoosh will check last modification date +of each file and add it to reindex if newer file is available. Also indexing +daemon checks for removed files and removes them from index. + +Sometime You might want to rebuild index from scratch. You can do that using +the `-f` flag passed to paster command or, in admin panel You can check +`build from scratch` flag. Nginx virtual host example --------------------------
--- a/production.ini Sat Nov 13 00:23:36 2010 +0100 +++ b/production.ini Sat Nov 13 02:29:46 2010 +0100 @@ -43,6 +43,7 @@ static_files = false lang=en cache_dir = %(here)s/data +index_dir = %(here)s/data/index #################################### ### BEAKER CACHE ####
--- a/rhodecode/config/deployment.ini_tmpl Sat Nov 13 00:23:36 2010 +0100 +++ b/rhodecode/config/deployment.ini_tmpl Sat Nov 13 02:29:46 2010 +0100 @@ -43,6 +43,7 @@ static_files = true lang=en cache_dir = %(here)s/data +index_dir = %(here)s/data/index app_instance_uuid = ${app_instance_uuid} ####################################
--- a/rhodecode/lib/indexers/__init__.py Sat Nov 13 00:23:36 2010 +0100 +++ b/rhodecode/lib/indexers/__init__.py Sat Nov 13 02:29:46 2010 +0100 @@ -59,14 +59,14 @@ usage = "CONFIG_FILE" summary = "Creates index for full text search given configuration file" - group_name = "Whoosh indexing" - + group_name = "RhodeCode" + takes_config_file = -1 parser = command.Command.standard_parser(verbose=True) -# parser.add_option('--repo-location', -# action='store', -# dest='repo_location', -# help="Specifies repositories location to index", -# ) + parser.add_option('--repo-location', + action='store', + dest='repo_location', + help="Specifies repositories location to index REQUIRED", + ) parser.add_option('-f', action='store_true', dest='full_index', @@ -75,27 +75,23 @@ default=False) def command(self): config_name = self.args[0] - p = config_name.split('/') - if len(p) == 1: - root = '.' - else: - root = '/'.join(p[:-1]) - print root + root = '.' if len(p) == 1 else '/'.join(p[:-1]) config = ConfigParser.ConfigParser({'here':root}) config.read(config_name) - print dict(config.items('app:main'))['index_dir'] + index_location = dict(config.items('app:main'))['index_dir'] - #return + repo_location = self.options.repo_location - #======================================================================= + #====================================================================== # WHOOSH DAEMON - #======================================================================= + #====================================================================== from rhodecode.lib.pidlock import LockHeld, DaemonLock from rhodecode.lib.indexers.daemon import WhooshIndexingDaemon try: l = DaemonLock() - WhooshIndexingDaemon(index_location=index_location)\ + WhooshIndexingDaemon(index_location=index_location, + repo_location=repo_location)\ .run(full_index=self.options.full_index) l.release() except LockHeld:
--- a/rhodecode/lib/indexers/daemon.py Sat Nov 13 00:23:36 2010 +0100 +++ b/rhodecode/lib/indexers/daemon.py Sat Nov 13 02:29:46 2010 +0100 @@ -78,9 +78,7 @@ if not repo_location: raise Exception('You have to provide repositories location') - - - self.repo_paths = HgModel.repo_scan('/', self.repo_location, None, True) + self.repo_paths = HgModel().repo_scan(self.repo_location, None, True) self.initial = False if not os.path.isdir(self.index_location): os.mkdir(self.index_location) @@ -89,8 +87,7 @@ self.initial = True def get_paths(self, repo): - """ - recursive walk in root dir and return a set of all path in that dir + """recursive walk in root dir and return a set of all path in that dir based on repository walk function """ index_paths_ = set() @@ -115,7 +112,8 @@ return mktime(node.last_changeset.date.timetuple()) def add_doc(self, writer, path, repo): - """Adding doc to writer""" + """Adding doc to writer this function itself fetches data from + the instance of vcs backend""" node = self.get_node(repo, path) #we just index the content of chosen files
--- a/setup.cfg Sat Nov 13 00:23:36 2010 +0100 +++ b/setup.cfg Sat Nov 13 02:29:46 2010 +0100 @@ -1,5 +1,5 @@ [egg_info] -tag_build = rc4 +tag_build = beta tag_svn_revision = true [easy_install]
--- a/setup.py Sat Nov 13 00:23:36 2010 +0100 +++ b/setup.py Sat Nov 13 02:29:46 2010 +0100 @@ -89,5 +89,10 @@ [paste.app_install] main = pylons.util:PylonsInstaller + + [paste.global_paster_command] + make-index = rhodecode.lib.indexers:MakeIndex + upgrade-db = rhodecode.lib.utils:UpgradeDb + """, )