# HG changeset patch # User Matt Mackall # Date 1374876485 18000 # Node ID 8b190adb7ee3c780495f52a2e5aae5e89e007110 # Parent 8963a706e075e25e0b65ce2f3372f9aba2c2f8a6 revert: make backup when unforgetting a file (issue3423) This skips the backup if it would be a duplicate. diff -r 8963a706e075 -r 8b190adb7ee3 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Fri Jul 26 15:42:10 2013 -0500 +++ b/mercurial/cmdutil.py Fri Jul 26 17:08:05 2013 -0500 @@ -1976,7 +1976,7 @@ # make backup if not in target manifest (modified, revert, remove, True, True), (added, revert, remove, True, False), - (removed, undelete, None, False, False), + (removed, undelete, None, True, False), (deleted, revert, remove, False, False), ) @@ -1986,7 +1986,8 @@ def handle(xlist, dobackup): xlist[0].append(abs) if (dobackup and not opts.get('no_backup') and - os.path.lexists(target)): + os.path.lexists(target) and + repo[None][abs].cmp(ctx[abs])): bakname = "%s.orig" % rel ui.note(_('saving current version of %s as %s\n') % (rel, bakname)) diff -r 8963a706e075 -r 8b190adb7ee3 tests/test-issue660.t --- a/tests/test-issue660.t Fri Jul 26 15:42:10 2013 -0500 +++ b/tests/test-issue660.t Fri Jul 26 17:08:05 2013 -0500 @@ -73,6 +73,15 @@ $ hg st +Issue3423: + + $ hg forget a + $ echo zed > a + $ hg revert a + $ hg st + ? a.orig + $ rm a.orig + addremove: $ rm -r a b