Comments
Patch
@@ -456,10 +456,12 @@ Write the python script to disk
> # wc: file exist with a content different from base and parent
> 'wc': lambda cc: 'wc',
> # removed: file is missing and marked as untracked
> 'removed': lambda cc: None,
> }
+ > # untracked-X is a version of X where the file is not tracked (? unknown)
+ > wccontent['untracked-clean'] = wccontent['clean']
>
> # build the combination of possible state
> combination = []
> for ctxkey in ctxcontent:
> for wckey in wccontent:
@@ -502,26 +504,31 @@ check list of planned files
$ python gen-revert-cases.py filelist
added_clean
added_removed
added_revert
+ added_untracked-clean
added_wc
clean_clean
clean_removed
clean_revert
+ clean_untracked-clean
clean_wc
missing_clean
missing_removed
missing_revert
+ missing_untracked-clean
missing_wc
modified_clean
modified_removed
modified_revert
+ modified_untracked-clean
modified_wc
removed_clean
removed_removed
removed_revert
+ removed_untracked-clean
removed_wc
Script to make a simple text version of the content
---------------------------------------------------
@@ -548,93 +555,110 @@ Generate base changeset
$ python ../gen-revert-cases.py base
$ hg addremove --similarity 0
adding clean_clean
adding clean_removed
adding clean_revert
+ adding clean_untracked-clean
adding clean_wc
adding modified_clean
adding modified_removed
adding modified_revert
+ adding modified_untracked-clean
adding modified_wc
adding removed_clean
adding removed_removed
adding removed_revert
+ adding removed_untracked-clean
adding removed_wc
$ hg status
A clean_clean
A clean_removed
A clean_revert
+ A clean_untracked-clean
A clean_wc
A modified_clean
A modified_removed
A modified_revert
+ A modified_untracked-clean
A modified_wc
A removed_clean
A removed_removed
A removed_revert
+ A removed_untracked-clean
A removed_wc
$ hg commit -m 'base'
(create a simple text version of the content)
$ python ../dircontent.py > ../content-base.txt
$ cat ../content-base.txt
base clean_clean
base clean_removed
base clean_revert
+ base clean_untracked-clean
base clean_wc
base modified_clean
base modified_removed
base modified_revert
+ base modified_untracked-clean
base modified_wc
base removed_clean
base removed_removed
base removed_revert
+ base removed_untracked-clean
base removed_wc
Create parent changeset
$ python ../gen-revert-cases.py parent
$ hg addremove --similarity 0
adding added_clean
adding added_removed
adding added_revert
+ adding added_untracked-clean
adding added_wc
removing removed_clean
removing removed_removed
removing removed_revert
+ removing removed_untracked-clean
removing removed_wc
$ hg status
M modified_clean
M modified_removed
M modified_revert
+ M modified_untracked-clean
M modified_wc
A added_clean
A added_removed
A added_revert
+ A added_untracked-clean
A added_wc
R removed_clean
R removed_removed
R removed_revert
+ R removed_untracked-clean
R removed_wc
$ hg commit -m 'parent'
(create a simple text version of the content)
$ python ../dircontent.py > ../content-parent.txt
$ cat ../content-parent.txt
parent added_clean
parent added_removed
parent added_revert
+ parent added_untracked-clean
parent added_wc
base clean_clean
base clean_removed
base clean_revert
+ base clean_untracked-clean
base clean_wc
parent modified_clean
parent modified_removed
parent modified_revert
+ parent modified_untracked-clean
parent modified_wc
Setup working directory
$ python ../gen-revert-cases.py wc | cat
@@ -644,48 +668,58 @@ Setup working directory
removing clean_removed
adding missing_wc
removing modified_removed
adding removed_revert
adding removed_wc
+ $ hg forget *untracked*
$ hg status
M added_wc
M clean_wc
M modified_revert
M modified_wc
A missing_wc
A removed_revert
A removed_wc
R added_removed
R added_revert
+ R added_untracked-clean
R clean_removed
+ R clean_untracked-clean
R modified_removed
+ R modified_untracked-clean
$ hg status --rev 'desc("base")'
M clean_wc
M modified_clean
M modified_wc
M removed_wc
A added_clean
A added_wc
A missing_wc
R clean_removed
+ R clean_untracked-clean
R modified_removed
+ R modified_untracked-clean
R removed_clean
R removed_removed
+ R removed_untracked-clean
(create a simple text version of the content)
$ python ../dircontent.py > ../content-wc.txt
$ cat ../content-wc.txt
parent added_clean
+ parent added_untracked-clean
wc added_wc
base clean_clean
base clean_revert
+ base clean_untracked-clean
wc clean_wc
wc missing_wc
parent modified_clean
base modified_revert
+ parent modified_untracked-clean
wc modified_wc
base removed_revert
wc removed_wc
$ cd ..
@@ -701,16 +735,19 @@ Test revert --all to parent content
check revert output
$ hg revert --all
undeleting added_removed
undeleting added_revert
+ undeleting added_untracked-clean
reverting added_wc
undeleting clean_removed
+ undeleting clean_untracked-clean
reverting clean_wc
forgetting missing_wc
undeleting modified_removed
reverting modified_revert
+ undeleting modified_untracked-clean
reverting modified_wc
forgetting removed_revert
forgetting removed_wc
Compare resulting directory with revert target.
@@ -748,19 +785,22 @@ Misbehavior:
$ hg revert --all --rev 'desc(base)'
removing added_clean
removing added_wc
undeleting clean_removed
+ undeleting clean_untracked-clean
reverting clean_wc
forgetting missing_wc
reverting modified_clean
undeleting modified_removed
reverting modified_revert
+ undeleting modified_untracked-clean
reverting modified_wc
adding removed_clean
adding removed_removed
reverting removed_revert
+ adding removed_untracked-clean
reverting removed_wc
Compare resulting directory with revert target.
The diff is filtered to include change only. The only difference should be
@@ -772,12 +812,14 @@ Misbehavior:
| - added_wc (DATA LOSS)
$ python ../dircontent.py > ../content-base-all.txt
$ cd ..
$ diff -U 0 -- content-base.txt content-base-all.txt | grep _
+ +parent added_untracked-clean
+wc clean_wc.orig
+wc missing_wc
+ +parent modified_untracked-clean.orig
+wc modified_wc.orig
+wc removed_wc.orig
Test revert to parent content with explicit file name
-----------------------------------------------------
@@ -800,20 +842,24 @@ revert all files individually and check
### revert for: added_removed
### revert for: added_revert
+ ### revert for: added_untracked-clean
+
### revert for: added_wc
### revert for: clean_clean
no changes needed to clean_clean
### revert for: clean_removed
### revert for: clean_revert
no changes needed to clean_revert
+ ### revert for: clean_untracked-clean
+
### revert for: clean_wc
### revert for: missing_clean
missing_clean: no such file in rev * (glob)
@@ -821,29 +867,37 @@ revert all files individually and check
missing_removed: no such file in rev * (glob)
### revert for: missing_revert
missing_revert: no such file in rev * (glob)
+ ### revert for: missing_untracked-clean
+ missing_untracked-clean: no such file in rev * (glob)
+
### revert for: missing_wc
### revert for: modified_clean
no changes needed to modified_clean
### revert for: modified_removed
### revert for: modified_revert
+ ### revert for: modified_untracked-clean
+
### revert for: modified_wc
### revert for: removed_clean
removed_clean: no such file in rev * (glob)
### revert for: removed_removed
removed_removed: no such file in rev * (glob)
### revert for: removed_revert
+ ### revert for: removed_untracked-clean
+ removed_untracked-clean: no such file in rev * (glob)
+
### revert for: removed_wc
check resulting directory againt the --all run
(There should be no difference)
@@ -872,10 +926,11 @@ Misbehavior:
| - added_revert
| - clean_revert
| - modified_revert
| - removed_revert
| - added_removed
+| - added_untracked-clean
$ for file in `python ../gen-revert-cases.py filelist`; do
> echo '### revert for:' $file;
> hg revert $file --rev 'desc(base)';
> echo
@@ -884,18 +939,22 @@ Misbehavior:
### revert for: added_removed
### revert for: added_revert
+ ### revert for: added_untracked-clean
+
### revert for: added_wc
### revert for: clean_clean
### revert for: clean_removed
### revert for: clean_revert
+ ### revert for: clean_untracked-clean
+
### revert for: clean_wc
### revert for: missing_clean
missing_clean: no such file in rev * (glob)
@@ -903,26 +962,33 @@ Misbehavior:
missing_removed: no such file in rev * (glob)
### revert for: missing_revert
missing_revert: no such file in rev * (glob)
+ ### revert for: missing_untracked-clean
+ missing_untracked-clean: no such file in rev * (glob)
+
### revert for: missing_wc
### revert for: modified_clean
### revert for: modified_removed
### revert for: modified_revert
+ ### revert for: modified_untracked-clean
+
### revert for: modified_wc
### revert for: removed_clean
### revert for: removed_removed
### revert for: removed_revert
+ ### revert for: removed_untracked-clean
+
### revert for: removed_wc
check resulting directory againt the --all run
(There should be no difference)