[issue2388] Crash with hg qmv when patches have same name

contingencyplan bugs at mercurial.selenic.com
Sun Sep 19 23:09:47 UTC 2010


New submission from contingencyplan <contingencyplan at gmail.com>:

If I have two patches, a.patch and b.patch, and I rename them so I have
b.patch -> c.patch, a.patch -> b.patch, Mercurial + mq crashes upon the
second rename when the mq directory is versioned and a.patch and b.patch
have been committed. Furthermore, the crash leaves the mq directory in an
inconsistent state -- the series file still lists a.patch, but the rename of
a.patch -> b.patch occurred, so attempts to push a.patch will fail. On the
other hand, if I commit the rename b.patch -> c.patch to the mq repository,
I can then perform the a.patch -> b.patch rename without issue, thus
providing a workaround.

This is the minimum sequence of commands to cause the crash. In particular,
the patch directory must be versioned, and both a.patch and b.patch must be
committed to it before the renaming occurs.

In a clean directory:

% hg init

% hg qinit -c

% hg qnew a.patch

% hg qnew b.patch

% hg ci --mq -m "a.patch b.patch"

% hg qmv b.patch c.patch

% hg qmv a.patch b.patch
** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or mercurial at selenic.com
** Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3]
** Mercurial Distributed SCM (version 1.6.3)
** Extensions loaded: bookmarks, churn, color, convert, eol, extdiff, fetch,
gpg, git, mq, graphlog, pager, progress, purge, rebase, record
Traceback (most recent call last):
  File "/usr/bin/hg", line 27, in <module>
    mercurial.dispatch.run()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 34, in
dispatch
    return _runcatch(u, args)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 54, in
_runcatch
    return _dispatch(ui, args)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 494, in
_dispatch
    cmdpats, cmdoptions)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 355, in
runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 174, in wrap
    return wrapper(origfn, *args, **kwargs)
  File "/usr/lib/pymodules/python2.6/hgext/pager.py", line 95, in pagecmd
    return orig(ui, options, cmd, cmdfunc)
  File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 174, in wrap
    return wrapper(origfn, *args, **kwargs)
  File "/usr/lib/pymodules/python2.6/hgext/color.py", line 211, in colorcmd
    return orig(ui_, opts, cmd, cmdfunc)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 545, in
_runcommand
    return checkargs()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 499, in
checkargs
    return cmdfunc()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 492, in
<lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 420, in check
    return func(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/hgext/mq.py", line 2336, in rename
    wctx.undelete([name])
  File "/usr/lib/pymodules/python2.6/mercurial/context.py", line 847, in
undelete
    t = fctx.data()
AttributeError: 'changectx' object has no attribute 'data'

% hg qseries
a.patch
c.patch

% hg qpop -a
popping c.patch
popping a.patch
patch queue now empty

% hg qpush
applying a.patch
unable to read a.patch

% ls .hg/patches
b.patch  c.patch  series  status

% hg status --mq
M series
A c.patch
R b.patch
! a.patch


According to kiilerix in IRC #mercurial, this issue was introduced via
http://www.selenic.com/hg/rev/a1aad8333864 .

----------
messages: 13661
nosy: contingencyplan, djc, kiilerix
priority: bug
status: unread
title: Crash with hg qmv when patches have same name
topic: hg, mq

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


More information about the Mercurial-devel mailing list