User can create patch with whitespace in name, then cannot manipulate it
Created originally on Bitbucket by etrue
TortoiseHg allows the user to name a patch beginning with space, but then cannot rename it ("no such file or directory"). This might be a limitation of Mercurial -- I was also not able to qrename from the console, even with quotes or escaping. Could TortoiseHg warn or prevent the user from accidentally using whitespace in the patchname?
Also, qreorder throws an exception:
% hg qrename mypatch " mypatch"
[command completed successfully Fri Feb 24 13:26:43 2017]
% hg qrename mypatch mypatch1
abort: No such file or directory
[command returned code 255 Fri Feb 24 13:26:52 2017]
% hg qreorder --after otherpatch mypatch
** unknown exception encountered, please report by visiting
** https://mercurial-scm.org/wiki/BugTracker
** Python 2.7.11 (default, Jun 4 2016, 17:10:25) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)]
** Mercurial Distributed SCM (version 3.9.2)
** Extensions loaded: strip, mq, rebase, graphlog, pager, color, fetch, record, transplant, purge, shelve, tortoisehg.util.hgcommands, tortoisehg.util.partialcommit, tortoisehg.util.pipeui, tortoisehg.util.hgdispatch
** unknown exception encountered, please report by visiting
** https://mercurial-scm.org/wiki/BugTracker
** Python 2.7.11 (default, Jun 4 2016, 17:10:25) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)]
** Mercurial Distributed SCM (version 3.9.2)
** Extensions loaded: strip, mq, rebase, graphlog, pager, color, fetch, record, transplant, purge, shelve, tortoisehg.util.hgcommands, tortoisehg.util.partialcommit, tortoisehg.util.pipeui, tortoisehg.util.hgdispatch
Traceback (most recent call last):
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/hg", line 45, in <module>
mercurial.dispatch.run()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 59, in run
sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 125, in dispatch
ret = _runcatch(req)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 204, in _runcatch
return _dispatch(req)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 880, in _dispatch
cmdpats, cmdoptions)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 637, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 1010, in _runcommand
return checkargs()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 971, in checkargs
return cmdfunc()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 877, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/util.py", line 1036, in check
return func(*args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/extensions.py", line 210, in closure
return func(*(args + a), **kw)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/util.py", line 1036, in check
return func(*args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/hgext/mq.py", line 3539, in mqcommand
return orig(ui, repo, *args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/util.py", line 1036, in check
return func(*args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/commands.py", line 6513, in serve
return cmdutil.service(opts, initfn=service.init, runfn=service.run)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/cmdutil.py", line 883, in service
return runfn()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/commandserver.py", line 340, in run
return sv.serve()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/commandserver.py", line 293, in serve
while self.serveone():
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/commandserver.py", line 268, in serveone
handler(self)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/commandserver.py", line 251, in runcommand
ret = (dispatch.dispatch(req) or 0) & 255 # might return None
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 125, in dispatch
ret = _runcatch(req)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 204, in _runcatch
return _dispatch(req)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/extensions.py", line 210, in closure
return func(*(args + a), **kw)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/tortoisehg/util/hgdispatch.py", line 23, in _dispatch
return orig(req)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 880, in _dispatch
cmdpats, cmdoptions)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 637, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 1010, in _runcommand
return checkargs()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 971, in checkargs
return cmdfunc()
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/dispatch.py", line 877, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/util.py", line 1036, in check
return func(*args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/extensions.py", line 210, in closure
return func(*(args + a), **kw)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/util.py", line 1036, in check
return func(*args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/hgext/mq.py", line 3539, in mqcommand
return orig(ui, repo, *args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/mercurial/util.py", line 1036, in check
return func(*args, **kwargs)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/tortoisehg/util/hgcommands.py", line 131, in qreorder
_applymovemqpatches(q, after, patches)
File "/Applications/TortoiseHg.app/Contents/Resources/lib/python2.7/tortoisehg/util/hgcommands.py", line 88, in _applymovemqpatches
for i, n in sorted([(fullindexes[n], n) for n in patches], reverse=True):
KeyError: 'mypatch'
cmdserver: process exited unexpectedly with code 1
web-r1623%