Opened 14 years ago
Closed 14 years ago
#9724 closed defect (fixed)
TracMercurial passes unicode key to the mercurial package
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | normal | Milestone: | plugin - mercurial |
Component: | plugin/mercurial | Version: | 0.12.1 |
Severity: | major | Keywords: | unicode key mercurial warning str |
Cc: | Branch: | ||
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description
See the details here: http://mercurial.selenic.com/bts/issue2458
The issue does not cause a traceback, only a warning and maybe incorrect behavior.
I managed to get a stack trace and the wrong (unicode) value passed, while the mercurial package expects only str:
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/web/main.py", line 511, in _dispatch_request dispatcher.dispatch(req) File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/web/main.py", line 237, in dispatch resp = chosen_handler.process_request(req) File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/versioncontrol/web_ui/browser.py", line 390, in process_request dir_data = self._render_dir(req, repos, node, rev, order, desc) File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/versioncontrol/web_ui/browser.py", line 551, in _render_dir changes = get_changes(repos, [i.rev for i in entries], self.log) File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/versioncontrol/web_ui/util.py", line 34, in get_changes changeset = repos.get_changeset(rev) File "/usr/local/lib/python2.6/dist-packages/TracMercurial-0.12.0.23dev_r9953-py2.6.egg/tracext/hg/backend.py", line 513, in get_changeset return MercurialChangeset(self, self.hg_node(unicode(rev))) File "/usr/local/lib/python2.6/dist-packages/TracMercurial-0.12.0.23dev_r9953-py2.6.egg/tracext/hg/backend.py", line 411, in hg_node return self.repo.lookup(rev) File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 435, in lookup ...
The value of the rev variable at line 411
of backend.py
is:
u'f972428f5a0408e74c7c1aa98b867a8245585e79'
It is passed as the "key" parameter to the lookup
method, which expects only str values.
Since the key can only contain ASCII characters (hexadecimal), the following fix would work:
return self.repo.lookup(str(rev))
Attachments (0)
Change History (4)
comment:1 by , 14 years ago
Milestone: | 0.12.2 → plugin - mercurial |
---|
comment:2 by , 14 years ago
Severity: | normal → major |
---|
Yes, I've also noticed this for paths.