mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
4838457b17
Summary: When hg addremove needs to remove a file, remotefilelog tries to create a filenode in order to prefetch the removed files from the server. If the file is not in the parent context manifest, this throws an exception. To solve this we have to first check if the file exists or not in the parent manifest. If the file does not exist in the manifest then we don't need to prefetch it, and addremove will behave like forget rather than remove. Reviewed By: markbt Differential Revision: D7009649 fbshipit-source-id: 0570bc00db546a455b9c2e4628740e24ca819dd6
105 lines
1.7 KiB
Raku
105 lines
1.7 KiB
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"
|
|
committing files:
|
|
dir/bar
|
|
foo
|
|
committing manifest
|
|
committing changelog
|
|
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"
|
|
committing files:
|
|
dir/bar_2
|
|
foo_2
|
|
committing manifest
|
|
committing changelog
|
|
committed changeset 1:e65414bf35c5
|
|
$ cd ..
|
|
$ hg forget foo
|
|
$ hg -v addremove
|
|
adding foo
|
|
$ hg forget foo
|
|
|
|
$ hg -v addremove nonexistent
|
|
nonexistent: $ENOENT$
|
|
[1]
|
|
|
|
$ cd ..
|
|
|
|
$ hg init subdir
|
|
$ cd subdir
|
|
$ mkdir dir
|
|
$ cd dir
|
|
$ touch a.py
|
|
$ hg addremove 'glob:*.py'
|
|
adding a.py
|
|
$ hg forget a.py
|
|
$ hg addremove -I 'glob:*.py'
|
|
adding a.py
|
|
$ hg forget a.py
|
|
$ hg addremove
|
|
adding dir/a.py
|
|
$ cd ..
|
|
$ 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
|
|
|
|
$ rm c
|
|
|
|
$ hg ci -A -m "c" nonexistent
|
|
nonexistent: $ENOENT$
|
|
abort: failed to mark all new/missing files as added/removed
|
|
[255]
|
|
|
|
$ hg st
|
|
! c
|
|
|
|
$ hg forget c
|
|
$ touch foo
|
|
$ hg addremove
|
|
adding foo
|
|
$ rm foo
|
|
$ hg addremove
|
|
removing foo
|
|
|
|
$ cd ..
|