comparison mercurial/commands.py @ 5568:de620356064f

backout: disallow across branches (issue655)
author Matt Mackall <mpm@selenic.com>
date Sat, 01 Dec 2007 13:09:27 -0600
parents 253736bb0dc9
children e2da5b340651
comparison
equal deleted inserted replaced
5567:56e9f7b2d8fa 5568:de620356064f
192 cmdutil.bail_if_changed(repo) 192 cmdutil.bail_if_changed(repo)
193 op1, op2 = repo.dirstate.parents() 193 op1, op2 = repo.dirstate.parents()
194 if op2 != nullid: 194 if op2 != nullid:
195 raise util.Abort(_('outstanding uncommitted merge')) 195 raise util.Abort(_('outstanding uncommitted merge'))
196 node = repo.lookup(rev) 196 node = repo.lookup(rev)
197
198 a = repo.changelog.ancestor(op1, node)
199 if a != node:
200 raise util.Abort(_('cannot back out change on a different branch'))
201
197 p1, p2 = repo.changelog.parents(node) 202 p1, p2 = repo.changelog.parents(node)
198 if p1 == nullid: 203 if p1 == nullid:
199 raise util.Abort(_('cannot back out a change with no parents')) 204 raise util.Abort(_('cannot back out a change with no parents'))
200 if p2 != nullid: 205 if p2 != nullid:
201 if not opts['parent']: 206 if not opts['parent']:
208 parent = p 213 parent = p
209 else: 214 else:
210 if opts['parent']: 215 if opts['parent']:
211 raise util.Abort(_('cannot use --parent on non-merge changeset')) 216 raise util.Abort(_('cannot use --parent on non-merge changeset'))
212 parent = p1 217 parent = p1
218
213 hg.clean(repo, node, show_stats=False) 219 hg.clean(repo, node, show_stats=False)
214 revert_opts = opts.copy() 220 revert_opts = opts.copy()
215 revert_opts['date'] = None 221 revert_opts['date'] = None
216 revert_opts['all'] = True 222 revert_opts['all'] = True
217 revert_opts['rev'] = hex(parent) 223 revert_opts['rev'] = hex(parent)