@@ -2466,21 +2466,26 @@ def revert(ui, repo, ctx, parents, *pats
actions = {'revert': ([], _('reverting %s\n')),
'add': ([], _('adding %s\n')),
'remove': ([], removeforget),
'undelete': ([], _('undeleting %s\n'))}
+
+ # should we do a backup ?
+ backup = not opts.get('no_backup')
+ discard = False
+
disptable = (
# dispatch table:
# file state
# action
# make backup
- (modified, actions['revert'], False),
- (dsmodified, actions['revert'], True),
- (dsadded, actions['remove'], True),
- (removed, actions['add'], True),
- (dsremoved, actions['undelete'], True),
- (clean, None, False),
+ (modified, actions['revert'], discard),
+ (dsmodified, actions['revert'], backup),
+ (dsadded, actions['remove'], backup),
+ (removed, actions['add'], backup),
+ (dsremoved, actions['undelete'], backup),
+ (clean, None, discard),
)
for abs, (rel, exact) in sorted(names.items()):
# target file to be touch on disk (relative to cwd)
target = repo.wjoin(abs)
@@ -2493,12 +2498,11 @@ def revert(ui, repo, ctx, parents, *pats
if xlist is None:
if exact:
ui.warn(_('no changes needed to %s\n') % rel)
break
xlist[0].append(abs)
- if (dobackup and not opts.get('no_backup') and
- os.path.lexists(target) and
+ if (dobackup and os.path.lexists(target) and
abs in ctx and repo[None][abs].cmp(ctx[abs])):
bakname = "%s.orig" % rel
ui.note(_('saving current version of %s as %s\n') %
(rel, bakname))
if not opts.get('dry_run'):