Mercurial > public > mercurial-scm > evolve
diff hgext/evolve.py @ 973:6d691fefdbd1 stable
evolve: fix createmarkers() wrapper to accept an iterable
Docstring in mercurial.obsolete says "<relations> must be an iterable
of ...", and hgsubversion takes it at its word and passes a generator.
Until around Mercurial 3.0, this did not cause any problems, but now
it does: in a repo with both evolve and hgsubversion enabled, pushing
to Subversion when obsolete changesets are present causes a crash:
[...]
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
Since hgsubersion is playing by the documented rules, evolve must be
the guilty party here.
author | Greg Ward <greg@gerg.ca> |
---|---|
date | Thu, 05 Jun 2014 18:07:39 -0400 |
parents | d04a52f40f41 |
children | 85d213215d2c 0b44ae30cf3b ff43167ed0ba |
line wrap: on
line diff
--- a/hgext/evolve.py Tue Jun 03 16:44:24 2014 -0700 +++ b/hgext/evolve.py Thu Jun 05 18:07:39 2014 -0400 @@ -331,6 +331,7 @@ # every time this test is run, a kitten is slain. # Change it as soon as possible if '[,{metadata}]' in orig.__doc__: + relations = list(relations) for idx, rel in enumerate(relations): prec = rel[0] sucs = rel[1]