Mercurial > public > src > rhodecode
changeset 2424:6c0f76330d91 beta
fix for issue #450. Rhodecode no longer will crash when bad revision is present in journal data.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 22 May 2012 00:15:38 +0200 |
parents | 6ea36346590a |
children | 1dbf07735af4 |
files | rhodecode/lib/helpers.py |
diffstat | 1 files changed, 23 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/helpers.py Mon May 21 20:44:08 2012 +0200 +++ b/rhodecode/lib/helpers.py Tue May 22 00:15:38 2012 +0200 @@ -42,6 +42,8 @@ from rhodecode.lib.utils2 import str2bool, safe_unicode, safe_str, \ get_changeset_safe from rhodecode.lib.markup_renderer import MarkupRenderer +from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError +from rhodecode.lib.vcs.backends.base import BaseChangeset log = logging.getLogger(__name__) @@ -447,22 +449,30 @@ repo = user_log.repository.scm_instance - message = lambda rev: rev.message - lnk = lambda rev, repo_name: ( - link_to('r%s:%s' % (rev.revision, rev.short_id), - url('changeset_home', repo_name=repo_name, - revision=rev.raw_id), - title=tooltip(message(rev)), class_='tooltip') - ) + def lnk(rev, repo_name): + + if isinstance(rev, BaseChangeset): + lbl = 'r%s:%s' % (rev.revision, rev.short_id) + _url = url('changeset_home', repo_name=repo_name, + revision=rev.raw_id) + title = tooltip(rev.message) + else: + lbl = '%s' % rev + _url = '#' + title = _('Changeset not found') + + return link_to(lbl, _url, title=title, class_='tooltip',) revs = [] if len(filter(lambda v: v != '', revs_ids)) > 0: - # get only max revs_top_limit of changeset for performance/ui reasons - revs = [ - x for x in repo.get_changesets(revs_ids[0], - revs_ids[:revs_top_limit][-1]) - ] - + for rev in revs_ids[:revs_top_limit]: + try: + rev = repo.get_changeset(rev) + revs.append(rev) + except ChangesetDoesNotExistError: + log.error('cannot find revision %s in this repo' % rev) + revs.append(rev) + continue cs_links = [] cs_links.append(" " + ', '.join( [lnk(rev, repo_name) for rev in revs[:revs_limit]]