[issue3124] hg convert crashes on when filemap rename is in use (likely unicode-names related)

Marcin Kasperski bugs at mercurial.selenic.com
Wed Nov 23 08:08:22 CST 2011


New submission from Marcin Kasperski <Marcin.Kasperski at softax.pl>:

I tried hg converting https://github.com/EnigmaCurry/blogofile and got hg
convert crash. Details

$ hg version
Mercurial Distributed SCM (version 2.0)

$ git clone https://github.com/EnigmaCurry/blogofile
(…)

$ hg convert blogofile blogofile-1
(… works properly …)

$ cat > test.map
rename "." "blogofile-src/"
^D
$ hg convert --filemap=test.map blogofile blogofile-2
(…)
102 Fixes bf.template_context.template_name in static templates.
101 Fixed logging when formatting unicode strings.
100 Fix reading posts with files named with unicode characters
transaction abort!
rollback completed
** unknown exception encountered, please report by visiting
**  http://mercurial.selenic.com/wiki/BugTracker
** Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3]
** Mercurial Distributed SCM (version 2.0)
** Extensions loaded: children, churn, color, gpg, hgk, highlight, interhg,
mq, notify, patchbomb, rebase, record, qct, extdiff, fetch, transplant,
purge, graphlog, convert, keyword, mercurial_keyring, patience, rebaseif
Traceback (most recent call last):
  File "/usr/bin/hg", line 38, in <module>
    mercurial.dispatch.run()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 27, in run
    sys.exit(dispatch(request(sys.argv[1:])))
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 64, in
dispatch
    return _runcatch(req)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 87, in
_runcatch
    return _dispatch(req)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 684, in
_dispatch
    cmdpats, cmdoptions)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 466, in
runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 184, in wrap
    return wrapper(origfn, *args, **kwargs)
  File "/usr/lib/pymodules/python2.6/hgext/color.py", line 373, in colorcmd
    return orig(ui_, opts, cmd, cmdfunc)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 738, in
_runcommand
    return checkargs()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 692, in
checkargs
    return cmdfunc()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 681, in
<lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 454, in check
    return func(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/hgext/convert/__init__.py", line 269,
in convert
    return convcmd.convert(ui, src, dest, revmapfile, **opts)
  File "/usr/lib/pymodules/python2.6/hgext/convert/convcmd.py", line 445, in
convert
    c.convert(sortmode)
  File "/usr/lib/pymodules/python2.6/hgext/convert/convcmd.py", line 361, in
convert
    self.copy(c)
  File "/usr/lib/pymodules/python2.6/hgext/convert/convcmd.py", line 330, in
copy
    source, self.map)
  File "/usr/lib/pymodules/python2.6/hgext/convert/hg.py", line 171, in
putcommit
    self.repo.commitctx(ctx)
  File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 1176, in
commitctx
    changed)
  File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 932, in
_filecommit
    flog = self.file(fname)
  File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 614, in file
    return filelog.filelog(self.sopener, f)
  File "/usr/lib/pymodules/python2.6/mercurial/filelog.py", line 35, in __init__
    "/".join(("data", path + ".i")))
  File "/usr/lib/pymodules/python2.6/mercurial/revlog.py", line 240, in __init__
    f = self.opener(self.indexfile)
  File "/usr/lib/pymodules/python2.6/mercurial/store.py", line 377, in __call__
    return self.opener(self.encode(path), mode, *args, **kw)
  File "/usr/lib/pymodules/python2.6/mercurial/store.py", line 424, in <lambda>
    encode = lambda f: _hybridencode(f, auxencode)
  File "/usr/lib/pymodules/python2.6/mercurial/store.py", line 207, in
_hybridencode
    if d[-1] in '. ':
IndexError: string index out of range

It may be worth mentioning, that troublesome commit (last printed) creates
the file with Chinese characters in name (003 - post #3 - unicode test - 日
本語 test.markdown):

$ cd blogofile
$ git log --name-status -1 -r 60efb1d38b79e749ab96c6cd4e79e41ec2f2ff54
commit 60efb1d38b79e749ab96c6cd4e79e41ec2f2ff54
Author: Ryan McGuire <ryan at enigmacurry.com>
Date:   Thu Jan 27 09:52:18 2011 -0500

    Fix reading posts with files named with unicode characters

M	blogofile/site_init/blog_features/_controllers/blog/post.py
A	"blogofile/site_init/blog_unit_test/_posts/003 - post #3 - unicode test -
\346\227\245\346\234\254\350\252\236 test.markdown"
D	blogofile/site_init/blog_unit_test/_posts/003 - post #3 - unicode
test.markdown
A	"blogofile/site_init/simple_blog/_posts/003 - post 3 - unicode test -
\346\227\245\346\234\254\350\252\236 test.markdown"
D	blogofile/site_init/simple_blog/_posts/003 - post 3 - unicode test.markdown

----------
messages: 18152
nosy: Mekk
priority: bug
status: unread
title: hg convert crashes on when filemap rename is in use (likely unicode-names related)
topic: convert

____________________________________________________
Mercurial issue tracker <bugs at mercurial.selenic.com>
<http://mercurial.selenic.com/bts/issue3124>
____________________________________________________


More information about the Mercurial-devel mailing list