revert: simplify handling of `added` files
There are multiple possible cases for added files. But it's all handled by magic
much lower in the stack. We document them, simplify the codes and move on.
--- a/mercurial/cmdutil.py Fri Aug 15 11:48:05 2014 -0500
+++ b/mercurial/cmdutil.py Sat Aug 02 11:32:24 2014 -0700
@@ -2407,7 +2407,6 @@
dsmodified = set(changes[0])
dsadded = set(changes[1])
dsremoved = set(changes[2])
- dsadded |= _deletedadded
# only take into account for removes between wc and target
clean |= dsremoved - removed
@@ -2420,6 +2419,22 @@
dsmodified |= modified & dsadded # dirstate added may needs backup
modified -= dsmodified
+ # There are three categories of added files
+ #
+ # 1. addition that just happened in the dirstate
+ # (should be forgotten)
+ # 2. file is added since target revision and has local changes
+ # (should be backed up and removed)
+ # 3. file is added since target revision and is clean
+ # (should be removed)
+ #
+ # However we do not need to split them yet. The current revert code
+ # will automatically recognize (1) when performing operation. And
+ # the backup system is currently unabled to handle (2).
+ #
+ # So we just put them all in the same group.
+ dsadded = added
+
# if f is a rename, update `names` to also revert the source
cwd = repo.getcwd()
for f in dsadded:
@@ -2437,8 +2452,6 @@
missingmodified = dsmodified - smf
dsmodified -= missingmodified
- missingadded = dsadded - smf
- dsadded -= missingadded
# action to be actually performed by revert
# (<list of file>, message>) tuple
@@ -2455,8 +2468,7 @@
(modified, (actions['revert'], False)),
(dsmodified, (actions['revert'], True)),
(missingmodified, (actions['remove'], True)),
- (dsadded, (actions['revert'], True)),
- (missingadded, (actions['remove'], False)),
+ (dsadded, (actions['remove'], True)),
(removed, (actions['add'], True)),
(dsremoved, (actions['undelete'], True)),
(clean, (None, False)),
--- a/tests/test-revert.t Fri Aug 15 11:48:05 2014 -0500
+++ b/tests/test-revert.t Sat Aug 02 11:32:24 2014 -0700
@@ -908,12 +908,6 @@
check revert output
-Misbehavior:
-
-- report "reverting" when file needs no changes
-|
-| - reverting removed_revert
-
$ hg revert --all --rev 'desc(base)'
removing added_clean
removing added_deleted
@@ -936,7 +930,6 @@
adding removed_clean
reverting removed_deleted
adding removed_removed
- reverting removed_revert
adding removed_untracked-clean
adding removed_untracked-revert
adding removed_untracked-wc
@@ -1098,12 +1091,6 @@
revert all files individually and check the output
(output is expected to be different than in the --all case)
-Misbehavior:
-
-- fails to report no change to revert for
-|
-| - removed_revert
-
$ for file in `python ../gen-revert-cases.py filelist`; do
> echo '### revert for:' $file;
> hg revert $file --rev 'desc(base)';
@@ -1194,6 +1181,7 @@
### revert for: removed_removed
### revert for: removed_revert
+ no changes needed to removed_revert
### revert for: removed_untracked-clean