Mercurial > evolve
changeset 1628:db19b1dc5c45
topic: restrict 'hg prev' to current topic unless --no-topic is passed
This is far from perfect but a good start.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 17 Mar 2016 11:25:01 -0700 |
parents | a91115687a7e |
children | 548195454683 |
files | hgext/evolve.py tests/test-evolve-topic.t |
diffstat | 2 files changed, 40 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/evolve.py Thu Mar 17 10:04:30 2016 -0700 +++ b/hgext/evolve.py Thu Mar 17 11:25:01 2016 -0700 @@ -2079,6 +2079,7 @@ [('B', 'move-bookmark', False, _('move active bookmark after update')), ('', 'merge', False, _('bring uncommitted change along')), + ('', 'no-topic', False, _('ignore topic and move topologically')), ('n', 'dry-run', False, _('do not perform actions, just print what would be done'))], '[OPTION]...') @@ -2160,6 +2161,12 @@ raise children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()] + topic = getattr(repo, 'currenttopic', '') + filtered = [] + if topic and not opts.get("no_topic", False): + filtered = [ctx for ctx in children if ctx.topic() != topic] + # XXX N-square membership on children + children = [ctx for ctx in children if ctx not in filtered] displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate}) if len(children) == 1: c = children[0] @@ -2195,8 +2202,17 @@ result = 1 else: aspchildren = _aspiringchildren(repo, [repo['.'].rev()]) + if topic: + filtered.extend(repo[c] for c in children + if repo[c].topic() != topic) + # XXX N-square membership on children + aspchildren = [ctx for ctx in aspchildren if ctx not in filtered] if not opts['evolve'] or not aspchildren: - ui.warn(_('no children\n')) + if filtered: + ui.warn(_('no children on topic "%s"\n') % topic) + ui.warn(_('do you want --no-topic\n')) + else: + ui.warn(_('no children\n')) if aspchildren: msg = _('(%i unstable changesets to be evolved here, ' 'do you want --evolve?)\n')
--- a/tests/test-evolve-topic.t Thu Mar 17 10:04:30 2016 -0700 +++ b/tests/test-evolve-topic.t Thu Mar 17 11:25:01 2016 -0700 @@ -191,3 +191,26 @@ | o 0 - {} 199cc73e9a0b add aaa (draft) + +Tests next and prev behavior +============================ + +Basic move are restricted to the current topic + + $ hg up foo + switching to topic foo + 0 files updated, 0 files merged, 4 files removed, 0 files unresolved + $ hg prev + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + [14] add eee + $ hg next + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + [15] add fff + $ hg next + no children on topic "foo" + do you want --no-topic + [1] + $ hg next --no-topic + switching to topic bar + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + [16] add ggg