comparison mercurial/commands.py @ 2614:8ba1c31f6864

backout: allow backout of merge changeset with --parent option. --parent allows to choose which parent of merge to revert to.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Fri, 14 Jul 2006 23:19:15 -0700
parents 479e26afa10f
children 8367b67ad397
comparison
equal deleted inserted replaced
2613:479e26afa10f 2614:8ba1c31f6864
863 bail_if_changed(repo) 863 bail_if_changed(repo)
864 op1, op2 = repo.dirstate.parents() 864 op1, op2 = repo.dirstate.parents()
865 if op2 != nullid: 865 if op2 != nullid:
866 raise util.Abort(_('outstanding uncommitted merge')) 866 raise util.Abort(_('outstanding uncommitted merge'))
867 node = repo.lookup(rev) 867 node = repo.lookup(rev)
868 parent, p2 = repo.changelog.parents(node) 868 p1, p2 = repo.changelog.parents(node)
869 if parent == nullid: 869 if p1 == nullid:
870 raise util.Abort(_('cannot back out a change with no parents')) 870 raise util.Abort(_('cannot back out a change with no parents'))
871 if p2 != nullid: 871 if p2 != nullid:
872 raise util.Abort(_('cannot back out a merge')) 872 if not opts['parent']:
873 raise util.Abort(_('cannot back out a merge changeset without '
874 '--parent'))
875 p = repo.lookup(opts['parent'])
876 if p not in (p1, p2):
877 raise util.Abort(_('%s is not a parent of %s' %
878 (short(p), short(node))))
879 parent = p
880 else:
881 if opts['parent']:
882 raise util.Abort(_('cannot use --parent on non-merge changeset'))
883 parent = p1
873 repo.update(node, force=True, show_stats=False) 884 repo.update(node, force=True, show_stats=False)
874 revert_opts = opts.copy() 885 revert_opts = opts.copy()
875 revert_opts['rev'] = hex(parent) 886 revert_opts['rev'] = hex(parent)
876 revert(ui, repo, **revert_opts) 887 revert(ui, repo, **revert_opts)
877 commit_opts = opts.copy() 888 commit_opts = opts.copy()
2827 [('', 'merge', None, 2838 [('', 'merge', None,
2828 _('merge with old dirstate parent after backout')), 2839 _('merge with old dirstate parent after backout')),
2829 ('m', 'message', '', _('use <text> as commit message')), 2840 ('m', 'message', '', _('use <text> as commit message')),
2830 ('l', 'logfile', '', _('read commit message from <file>')), 2841 ('l', 'logfile', '', _('read commit message from <file>')),
2831 ('d', 'date', '', _('record datecode as commit date')), 2842 ('d', 'date', '', _('record datecode as commit date')),
2843 ('', 'parent', '', _('parent to choose when backing out merge')),
2832 ('u', 'user', '', _('record user as committer')), 2844 ('u', 'user', '', _('record user as committer')),
2833 ('I', 'include', [], _('include names matching the given patterns')), 2845 ('I', 'include', [], _('include names matching the given patterns')),
2834 ('X', 'exclude', [], _('exclude names matching the given patterns'))], 2846 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
2835 _('hg backout [OPTION]... REV')), 2847 _('hg backout [OPTION]... REV')),
2836 "bundle": 2848 "bundle":