hgsubversion + evolve + Mercurial 3.0 = crash
Greg Ward
greg at gerg.ca
Tue Apr 22 13:45:13 CDT 2014
Hi all --
At work, I've been using hgsubversion and evolve on top of Mercurial
2.9 quite happily for a couple of months now. In fact, it's gotten
almost boring. So I updated my work machine to 3.0-rc+whatever this
morning, and then updated to the tip of default for both evolve and
hgsubversion. "hg push" to subversion crashed:
$ hg push
pushing to svn+ssh://blah/blah/blah
searching for changes
committing cd09979921ea
[r49188] gward: Add some docstrings.
pulled 1 revisions
committing 990250bcbe5d
[r49189] gward: lineparser: skip blank lines
pulled 1 revisions
committing 0e6f8d5d7e9a
[r49190] gward: Remove dead code.
pulled 1 revisions
committing b59bd4842345
[r49191] gward: Placate pep8 (version 1.5.6 is stricter about block comments)
pulled 1 revisions
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
** Unknown exception encountered with possibly-broken third-party extension hgsubversion
** which supports versions unknown of Mercurial.
** Please disable hgsubversion and try your action again.
** If that fixes the bug please report it to the extension author.
** Python 2.7.5+ (default, Feb 27 2014, 19:37:08) [GCC 4.8.1]
** Mercurial Distributed SCM (version 3.0-rc+15-dae36d3e1c60+20140422)
** Extensions loaded: patchbomb, record, purge, extdiff, color, hgsubversion, rebase, histedit, evolve
Traceback (most recent call last):
File "/home/gward/bin/hg", line 38, in <module>
mercurial.dispatch.run()
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 28, in run
sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 69, in dispatch
ret = _runcatch(req)
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 138, in _runcatch
return _dispatch(req)
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 810, in _dispatch
cmdpats, cmdoptions)
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 590, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/home/gward/src/hg-stable/mercurial/extensions.py", line 196, in wrap
return wrapper(origfn, *args, **kwargs)
File "/home/gward/src/hg-stable/hgext/color.py", line 428, in colorcmd
return orig(ui_, opts, cmd, cmdfunc)
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 901, in _runcommand
return checkargs()
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 872, in checkargs
return cmdfunc()
File "/home/gward/src/hg-stable/mercurial/dispatch.py", line 807, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/home/gward/src/hg-stable/mercurial/util.py", line 518, in check
return func(*args, **kwargs)
File "/home/gward/src/hg-stable/mercurial/extensions.py", line 151, in wrap
util.checksignature(origfn), *args, **kwargs)
File "/home/gward/src/hg-stable/mercurial/util.py", line 518, in check
return func(*args, **kwargs)
File "/home/gward/src/hgsubversion/hgsubversion/wrappers.py", line 642, in generic
return orig(ui, repo, *args, **opts)
File "/home/gward/src/hg-stable/mercurial/util.py", line 518, in check
return func(*args, **kwargs)
File "/home/gward/src/hg-stable/mercurial/extensions.py", line 151, in wrap
util.checksignature(origfn), *args, **kwargs)
File "/home/gward/src/hg-stable/mercurial/util.py", line 518, in check
return func(*args, **kwargs)
File "/home/gward/src/hg-evolve/hgext/evolve.py", line 616, in warnobserrors
ret = orig(ui, repo, *args, **kwargs)
File "/home/gward/src/hg-stable/mercurial/util.py", line 518, in check
return func(*args, **kwargs)
File "/home/gward/src/hg-stable/mercurial/commands.py", line 4712, in push
newbranch=opts.get('new_branch'))
File "/home/gward/src/hg-evolve/hgext/evolve.py", line 642, in push
result = super(evolvingrepo, self).push(remote, *args, **opts)
File "/home/gward/src/hgsubversion/hgsubversion/svnrepo.py", line 77, in wrapper
return fn(self, *args, **opts)
File "/home/gward/src/hgsubversion/hgsubversion/svnrepo.py", line 101, in push
return wrappers.push(self, remote, force, revs)
File "/home/gward/src/hgsubversion/hgsubversion/wrappers.py", line 346, in push
obsolete.createmarkers(repo, relations)
File "/home/gward/src/hg-stable/mercurial/extensions.py", line 196, in wrap
return wrapper(origfn, *args, **kwargs)
File "/home/gward/src/hg-evolve/hgext/evolve.py", line 332, in _createmarkers
relations[idx] = (prec, sucs, meta)
TypeError: 'generator' object does not support item assignment
The good news is, all four of my outgoing changesets were successfully
committed to svn. Things went wrong marking the original hg-only
changesets obsolete.
Here's what my DAG looks like right now after the crash:
@ 134:1adf425588e6 (public) gward Placate pep8 (version 1.5.6 is stricter about block comments)
|
| o 133:b59bd4842345 (draft) gward Placate pep8 (version 1.5.6 is stricter about block comments)
|/
o 132:2f12ffbec5c8 (public) gward Remove dead code.
|
o 131:12fbe1617fd3 (public) gward lineparser: skip blank lines
|
| o 130:990250bcbe5d (draft) gward lineparser: skip blank lines
|/
o 129:6d49db3243a7 (public) gward Add some docstrings.
|
The public changesets are in svn; the draft ones are not. So you can
see that two of the four changesets I pushed were successfully marked
obsolete and became hidden. Curiously, the two that were successfully
marked obsolete had themselves been amended -- they have obsolete
predecessors. The two that were not marked obsolete have no
predecessors; I got them right the first time.
Not sure who to blame here. Is this hgsubversion or evolve?
Greg
More information about the Mercurial-devel
mailing list