mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
98fbfc44f9
After running "hg forget README && hg addremove", README will still be reported as removed, while "hg forget README && hg add README" adds it back so it gets reported as clean. It seems like they should behave the same. Furthermore, it seems like no files should remain untracked after 'hg addremove && hg commit' (or 'hg commit -A'). For these reasons, change the behavior of addremove so it does add forgotten files back. The problem is with scmutil._interestingfiles(), which reports the file as removed, so scmutil.addremove() does not add it. Fix by teaching _interestingfiles() to report forgotten files separately from removed files and make addremove() add forgotten files back. However, do not treat forgotten files as sources for rename detection. Note that since removed and forgotten files are treated the same before this change, forgotten files were considered sources for rename detection. Also update the other caller, marktouched(), in the same way as addremove().
58 lines
975 B
Raku
58 lines
975 B
Raku
$ hg init rep
|
|
$ cd rep
|
|
$ mkdir dir
|
|
$ touch foo dir/bar
|
|
$ hg -v addremove
|
|
adding dir/bar
|
|
adding foo
|
|
$ hg -v commit -m "add 1"
|
|
dir/bar
|
|
foo
|
|
committed changeset 0:6f7f953567a2
|
|
$ cd dir/
|
|
$ touch ../foo_2 bar_2
|
|
$ hg -v addremove
|
|
adding dir/bar_2
|
|
adding foo_2
|
|
$ hg -v commit -m "add 2"
|
|
dir/bar_2
|
|
foo_2
|
|
committed changeset 1:e65414bf35c5
|
|
$ cd ..
|
|
$ hg forget foo
|
|
$ hg -v addremove
|
|
adding foo
|
|
$ cd ..
|
|
|
|
$ hg init sim
|
|
$ cd sim
|
|
$ echo a > a
|
|
$ echo a >> a
|
|
$ echo a >> a
|
|
$ echo c > c
|
|
$ hg commit -Ama
|
|
adding a
|
|
adding c
|
|
$ mv a b
|
|
$ rm c
|
|
$ echo d > d
|
|
$ hg addremove -n -s 50 # issue 1696
|
|
removing a
|
|
adding b
|
|
removing c
|
|
adding d
|
|
recording removal of a as rename to b (100% similar)
|
|
$ hg addremove -s 50
|
|
removing a
|
|
adding b
|
|
removing c
|
|
adding d
|
|
recording removal of a as rename to b (100% similar)
|
|
$ hg commit -mb
|
|
$ cp b c
|
|
$ hg forget b
|
|
$ hg addremove -s 50
|
|
adding b
|
|
adding c
|
|
$ cd ..
|