# HG changeset patch # User Pierre-Yves David # Date 1326137148 -3600 # Node ID 7e113963f2c8a377f15b8beb2ec3501d8497202f # Parent c083fb43daeecf171ad10119d129b3f8dc33fa7a Add gup and gdown command to mimic qpop and qpush command diff -r c083fb43daee -r 7e113963f2c8 hgext/evolution.py --- a/hgext/evolution.py Sun Jan 08 18:43:49 2012 +0100 +++ b/hgext/evolution.py Mon Jan 09 20:25:48 2012 +0100 @@ -21,7 +21,8 @@ from mercurial import commands from mercurial import util from mercurial.i18n import _ -from mercurial.commands import walkopts, commitopts, commitopts2, logopts +from mercurial.commands import walkopts, commitopts, commitopts2, logopt +from mercurial import hg ### util function ############################# @@ -170,25 +171,54 @@ target = newer[-1] repo.ui.status('hg relocate --rev %s %s\n' % (repo[next], repo[target])) -@command('^relocate', - [ - ('r', 'rev', '.', - _('revision to relocate')), - ], - '') -def cmdrelocate(ui, repo, dest, rev='.'): - """relocate a changeset""" - wlock = repo.wlock() - try: - src = scmutil.revsingle(repo, rev, rev) - dest = scmutil.revsingle(repo, dest, dest) - if src == src.ancestor(dest): - raise util.Abort(_('source is ancestor of destination')) - relocate(repo, src.rev(), dest.rev()) +shorttemplate = '[{rev}] {desc|firstline}\n' + +@command('^gdown', + [], + 'update to working directory parent an display summary lines') +def cmdgdown(ui, repo): + wkctx = repo[None] + wparents = wkctx.parents() + if len(wparents) != 1: + raise util.Abort('merge in progress') + + parents = wparents[0].parents() + displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate}) + if len(parents) == 1: + p = parents[0] + hg.update(repo, p.rev()) + displayer.show(p) return 0 - finally: - wlock.release() + else: + for p in parents: + displayer.show(p) + ui.warn(_('multiple parents, explicitly update to one\n')) + return 1 + +@command('^gup', + [], + 'update to working directory children an display summary lines') +def cmdup(ui, repo): + wkctx = repo[None] + wparents = wkctx.parents() + if len(wparents) != 1: + raise util.Abort('merge in progress') + children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()] + displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate}) + if not children: + ui.warn(_('No non-obsolete children\n')) + return 1 + if len(children) == 1: + c = children[0] + hg.update(repo, c.rev()) + displayer.show(c) + return 0 + else: + for c in children: + displayer.show(c) + ui.warn(_('Multiple non-obsolete children, explicitly update to one\n')) + return 1 @command('^kill',