mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
9d6b58b5cd
Summary: Generalise the `migrateonpull` mechanism of `treestate` into a generic `automigrate` step that is invoked at the start of pulling. This will be used for other migrations in the future. Reviewed By: liubov-dmitrieva Differential Revision: D13608718 fbshipit-source-id: d558dc21176a6b8d786836d06414e3fc88a20d47
48 lines
1.2 KiB
Perl
48 lines
1.2 KiB
Perl
#require fsmonitor
|
|
|
|
Fsmonitor is required for treestate to track untracked files.
|
|
|
|
Nonnormalset, otherparentset, copymap might have reference to untracked files.
|
|
They should be filtered out when downgrading from treestate to treedirstate.
|
|
|
|
Create a treestate repo
|
|
|
|
$ hg init repo1 --config format.dirstate=2
|
|
$ cd repo1
|
|
$ touch x
|
|
|
|
Write the untracked file to treestate
|
|
|
|
$ hg status
|
|
? x
|
|
$ hg debugtree
|
|
dirstate v2 (* 1 files tracked) (glob)
|
|
|
|
Downgrade to treedirstate
|
|
|
|
$ hg debugtree v1
|
|
|
|
Check nonnormalset
|
|
|
|
$ hg debugshell --command 'print(repr(sorted(repo.dirstate._map.nonnormalset)))'
|
|
[]
|
|
|
|
Check downgrade with "hg pull"
|
|
|
|
$ hg init $TESTTMP/repo2 --config format.dirstate=2
|
|
$ cd $TESTTMP/repo2
|
|
$ touch x
|
|
$ hg ci -m init -A x -q
|
|
|
|
$ hg init $TESTTMP/repo3 --config format.dirstate=2
|
|
$ cd $TESTTMP/repo3
|
|
$ hg pull ../repo2 --config format.dirstate=1 --config treestate.automigrate=true --config extensions.rebase= --rebase -q
|
|
|
|
fsmonitor state is invalidated after upgrade
|
|
|
|
$ ls .hg/fsmonitor.state
|
|
.hg/fsmonitor.state
|
|
$ hg pull ../repo2 --config format.dirstate=2 --config treestate.automigrate=true --config extensions.rebase= --rebase -q
|
|
$ [ -f .hg/fsmonitor.state ]
|
|
[1]
|