# HG changeset patch # User Pierre-Yves David # Date 1403628873 -3600 # Node ID 316ba2ddc034f509f6d3fd072889ad55ee4149bc # Parent 3a7b45a0bd20ffe7e24daecd322676af18706487 revset: factorize backup decision The conditional controlling the creation of backup is fairly big. We move config related decisions outside of the loop. diff -r 3a7b45a0bd20 -r 316ba2ddc034 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Tue Jun 24 17:44:31 2014 +0100 +++ b/mercurial/cmdutil.py Tue Jun 24 17:54:33 2014 +0100 @@ -2471,17 +2471,22 @@ '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()): @@ -2498,8 +2503,7 @@ 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') %