# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1521192704 -19800 # Node ID 68e99d2c6267a04de8b9783f307b20c6737471bf # Parent b3d2e0576d4cbbbae9c806548d7db4f22935072c prev: fix the breakage of `hg previous` from obsolete cset This patch fix the breakage of `hg prev` from obsolete changeset when topic is involved. We get the topicidx of it's succesor and proceed. diff -r b3d2e0576d4c -r 68e99d2c6267 hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Fri Mar 16 14:59:10 2018 +0530 +++ b/hgext3rd/topic/__init__.py Fri Mar 16 15:01:44 2018 +0530 @@ -134,13 +134,14 @@ from . import ( compat, constants, + destination, + discovery, + evolvebits, flow, + randomname, revset as topicrevset, - destination, stack, topicmap, - discovery, - randomname ) if util.safehasattr(registrar, 'command'): @@ -240,6 +241,10 @@ revlist = stack.stack(self._repo, topic=topic) try: return revlist.index(self.rev()) + except ValueError: + if self.obsolete(): + succ = evolvebits._singlesuccessor(self._repo, self) + return revlist.index(succ) except IndexError: # Lets move to the last ctx of the current topic return None diff -r b3d2e0576d4c -r 68e99d2c6267 tests/test-evolve-topic.t --- a/tests/test-evolve-topic.t Fri Mar 16 14:59:10 2018 +0530 +++ b/tests/test-evolve-topic.t Fri Mar 16 15:01:44 2018 +0530 @@ -324,47 +324,5 @@ ~ $ hg prev - ** Unknown exception encountered with possibly-broken third-party extension evolve - ** which supports versions 4.4 of Mercurial. - ** Please disable evolve and try your action again. - ** If that fixes the bug please report it to https://bz.mercurial-scm.org/ - ** Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] - ** Mercurial Distributed SCM (version 4.5.2+1098-cdc73e5c75af) - ** Extensions loaded: rebase, evolve, topic - Traceback (most recent call last): - File "/tmp/hgtests.GW4RZg/install/bin/hg", line 41, in - dispatch.run() - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 88, in run - status = (dispatch(req) or 0) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 208, in dispatch - ret = _runcatch(req) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 349, in _runcatch - return _callcatch(ui, _runcatchfunc) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 357, in _callcatch - return scmutil.callcatch(ui, func) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/scmutil.py", line 154, in callcatch - return func() - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 339, in _runcatchfunc - return _dispatch(req) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 943, in _dispatch - cmdpats, cmdoptions) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 700, in runcommand - ret = _runcommand(ui, options, cmd, d) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 951, in _runcommand - return cmdfunc() - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/dispatch.py", line 940, in - d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) - File "/tmp/hgtests.GW4RZg/install/lib/python/mercurial/util.py", line 1497, in check - return func(*args, **kwargs) - File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 1052, in cmdprevious - opts.get('move_bookmark'), topic) - File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 995, in _findprevtarget - if currenttopic and topic and _gettopicidx(p1) != 1: - File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 957, in _gettopicidx - return getattr(ctx, 'topicidx', lambda: None)() - File "/home/foobar/repo/mutable-history/hgext3rd/topic/__init__.py", line 242, in _contexttopicidx - return revlist.index(self.rev()) - File "/home/foobar/repo/mutable-history/hgext3rd/topic/stack.py", line 95, in index - return self.revs.index(item) - ValueError: 15 is not in list - [1] + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + [14] add ggg