comparison hgext/evolve.py @ 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
comparison
equal deleted inserted replaced
1627:a91115687a7e 1628:db19b1dc5c45
2077 2077
2078 @command('^previous', 2078 @command('^previous',
2079 [('B', 'move-bookmark', False, 2079 [('B', 'move-bookmark', False,
2080 _('move active bookmark after update')), 2080 _('move active bookmark after update')),
2081 ('', 'merge', False, _('bring uncommitted change along')), 2081 ('', 'merge', False, _('bring uncommitted change along')),
2082 ('', 'no-topic', False, _('ignore topic and move topologically')),
2082 ('n', 'dry-run', False, 2083 ('n', 'dry-run', False,
2083 _('do not perform actions, just print what would be done'))], 2084 _('do not perform actions, just print what would be done'))],
2084 '[OPTION]...') 2085 '[OPTION]...')
2085 def cmdprevious(ui, repo, **opts): 2086 def cmdprevious(ui, repo, **opts):
2086 """update to parent revision 2087 """update to parent revision
2158 except error.Abort as exc: 2159 except error.Abort as exc:
2159 exc.hint = _('do you want --merge?') 2160 exc.hint = _('do you want --merge?')
2160 raise 2161 raise
2161 2162
2162 children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()] 2163 children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()]
2164 topic = getattr(repo, 'currenttopic', '')
2165 filtered = []
2166 if topic and not opts.get("no_topic", False):
2167 filtered = [ctx for ctx in children if ctx.topic() != topic]
2168 # XXX N-square membership on children
2169 children = [ctx for ctx in children if ctx not in filtered]
2163 displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate}) 2170 displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
2164 if len(children) == 1: 2171 if len(children) == 1:
2165 c = children[0] 2172 c = children[0]
2166 bm = bmactive(repo) 2173 bm = bmactive(repo)
2167 shouldmove = opts.get('move_bookmark') and bm is not None 2174 shouldmove = opts.get('move_bookmark') and bm is not None
2193 displayer.show(c) 2200 displayer.show(c)
2194 ui.warn(_('explicitly update to one of them\n')) 2201 ui.warn(_('explicitly update to one of them\n'))
2195 result = 1 2202 result = 1
2196 else: 2203 else:
2197 aspchildren = _aspiringchildren(repo, [repo['.'].rev()]) 2204 aspchildren = _aspiringchildren(repo, [repo['.'].rev()])
2205 if topic:
2206 filtered.extend(repo[c] for c in children
2207 if repo[c].topic() != topic)
2208 # XXX N-square membership on children
2209 aspchildren = [ctx for ctx in aspchildren if ctx not in filtered]
2198 if not opts['evolve'] or not aspchildren: 2210 if not opts['evolve'] or not aspchildren:
2199 ui.warn(_('no children\n')) 2211 if filtered:
2212 ui.warn(_('no children on topic "%s"\n') % topic)
2213 ui.warn(_('do you want --no-topic\n'))
2214 else:
2215 ui.warn(_('no children\n'))
2200 if aspchildren: 2216 if aspchildren:
2201 msg = _('(%i unstable changesets to be evolved here, ' 2217 msg = _('(%i unstable changesets to be evolved here, '
2202 'do you want --evolve?)\n') 2218 'do you want --evolve?)\n')
2203 ui.warn(msg % len(aspchildren)) 2219 ui.warn(msg % len(aspchildren))
2204 result = 1 2220 result = 1