Edgewall Software

Opened 12 years ago

Last modified 12 years ago

#10545 closed defect

Mercurial plugin fails with IndexError — at Version 1

Reported by: Mitar Owned by:
Priority: normal Milestone:
Component: version control Version: 0.12.2
Severity: normal Keywords: verify
Cc: mmitar@… Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Christian Boos)

I am getting IndexError: list index out of range when I am trying to search Trac with Mercurial repository.

File "/usr/lib/python2.6/dist-packages/trac/web/main.py", line 511, in _dispatch_request
  dispatcher.dispatch(req)
File "/usr/lib/python2.6/dist-packages/trac/web/main.py", line 237, in dispatch
  resp = chosen_handler.process_request(req)
File "/usr/lib/python2.6/dist-packages/trac/search/web_ui.py", line 103, in process_request
  results = self._do_search(req, terms, filters)
File "/usr/lib/python2.6/dist-packages/trac/search/web_ui.py", line 208, in _do_search
  or [])
File "/usr/lib/python2.6/dist-packages/trac/versioncontrol/web_ui/changeset.py", line 1153, in get_search_results
  if 'CHANGESET_VIEW' in req.perm(cset):
File "/usr/lib/python2.6/dist-packages/trac/perm.py", line 553, in has_permission
  return self._has_permission(action, resource)
File "/usr/lib/python2.6/dist-packages/trac/perm.py", line 567, in _has_permission
  check_permission(action, perm.username, resource, perm)
File "/usr/lib/python2.6/dist-packages/trac/perm.py", line 454, in check_permission
  perm)
File "/usr/lib/python2.6/dist-packages/trac/versioncontrol/svn_authz.py", line 204, in check_permission
  changes = list(repos.get_changeset(resource.id).get_changes())
File "build/bdist.linux-x86_64/egg/tracext/hg/backend.py", line 653, in get_changeset
  return MercurialChangeset(self, self.changectx(rev))
File "build/bdist.linux-x86_64/egg/tracext/hg/backend.py", line 537, in changectx
  return self.repo[self.short_rev(rev)]
File "/usr/lib/python2.6/dist-packages/mercurial/localrepo.py", line 205, in __getitem__
  return context.changectx(self, changeid)
File "/usr/lib/python2.6/dist-packages/mercurial/context.py", line 26, in __init__
  self._node = self._repo.changelog.node(changeid)
File "/usr/lib/python2.6/dist-packages/mercurial/revlog.py", line 309, in node
  return self.index[rev][7]

To get this error I first have to change error reporting by removing {{{

<td><code>${shorten_line(repr(value))}</code></td>

}}} from error.html. If I do not remove it, I get this error instead:

  File "/usr/lib/pymodules/python2.6/genshi/template/eval.py", line 178, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File "/usr/lib/python2.6/dist-packages/trac/templates/error.html", line 165, in <Expression u'shorten_line(repr(value))'>
    <td><code>${shorten_line(repr(value))}</code></td>
  File "/usr/lib/python2.6/dist-packages/mercurial/context.py", line 38, in __repr__
    return "<changectx %s>" % str(self)
  File "/usr/lib/python2.6/dist-packages/mercurial/context.py", line 32, in __str__
    return short(self.node())
  File "/usr/lib/python2.6/dist-packages/mercurial/context.py", line 101, in node
    return self._node
AttributeError: 'changectx' object has no attribute '_node'

I am using Mercurial 2.0.1 and 10899 revision of Mercurial plugin for Trac.

Change History (1)

comment:1 by Christian Boos, 12 years ago

Description: modified (diff)

Looks like a nasty one…

Btw, how did you manage to search on Mercurial changesets? ;-)

Note: See TracTickets for help on using tickets.