mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
cb2e471763
Summary: We want to delete all the non-treestate dirstate implementations. Let's start throwing an exception if treestate is not enabled. We temporarily have a bypass in case we break an important usecase in the process. This also sets the standard new repo to be created in treestate mode, but adding treestate to newreporequirements. This was landed once as D19204621 but was backed out because eden backing repos were using the odl formats and hadn't been upgraded. We fixed that, and now the data shows ~10 people still using repos in this condition (https://fburl.com/scuba/dev_command_timers/zxb5hsg2). Some of them are broken repos, some are ancient eden repos and a simple eden rm and eden clone should fix them, some are simply old non-eden repos that no one has run commands in in a while. Reviewed By: xavierd Differential Revision: D20472234 fbshipit-source-id: 509b4f22b6ac4741b205ef69decfb26e56aebaf8
96 lines
1.9 KiB
Perl
96 lines
1.9 KiB
Perl
#chg-compatible
|
|
|
|
$ setconfig format.dirstate=2
|
|
|
|
------ Test dirstate._dirs refcounting
|
|
|
|
$ hg init t
|
|
$ cd t
|
|
$ mkdir -p a/b/c/d
|
|
$ touch a/b/c/d/x
|
|
$ touch a/b/c/d/y
|
|
$ touch a/b/c/d/z
|
|
$ hg ci -Am m
|
|
adding a/b/c/d/x
|
|
adding a/b/c/d/y
|
|
adding a/b/c/d/z
|
|
$ hg mv a z
|
|
moving a/b/c/d/x to z/b/c/d/x
|
|
moving a/b/c/d/y to z/b/c/d/y
|
|
moving a/b/c/d/z to z/b/c/d/z
|
|
|
|
Test name collisions
|
|
|
|
$ rm z/b/c/d/x
|
|
$ mkdir z/b/c/d/x
|
|
$ touch z/b/c/d/x/y
|
|
$ hg add z/b/c/d/x/y
|
|
abort: file 'z/b/c/d/x' in dirstate clashes with 'z/b/c/d/x/y'
|
|
[255]
|
|
$ rm -rf z/b/c/d
|
|
$ touch z/b/c/d
|
|
$ hg add z/b/c/d
|
|
abort: directory 'z/b/c/d' already in dirstate
|
|
[255]
|
|
|
|
$ cd ..
|
|
|
|
Issue1790: dirstate entry locked into unset if file mtime is set into
|
|
the future
|
|
|
|
Prepare test repo:
|
|
|
|
$ hg init u
|
|
$ cd u
|
|
$ echo a > a
|
|
$ hg add
|
|
adding a
|
|
$ hg ci -m1
|
|
|
|
Test modulo storage/comparison of absurd dates:
|
|
|
|
#if no-aix
|
|
$ touch -t 195001011200 a
|
|
$ hg st
|
|
$ hg debugstate
|
|
n 644 2 2018-01-19 15:14:08 a
|
|
#endif
|
|
|
|
Verify that exceptions during a dirstate change leave the dirstate
|
|
coherent (issue4353)
|
|
|
|
$ cat > ../dirstateexception.py <<EOF
|
|
> from __future__ import absolute_import
|
|
> from edenscm.mercurial import (
|
|
> error,
|
|
> extensions,
|
|
> merge,
|
|
> )
|
|
>
|
|
> def wraprecordupdates(orig, repo, actions, branchmerge):
|
|
> raise error.Abort("simulated error while recording dirstateupdates")
|
|
>
|
|
> def reposetup(ui, repo):
|
|
> extensions.wrapfunction(merge, 'recordupdates', wraprecordupdates)
|
|
> EOF
|
|
|
|
$ hg rm a
|
|
$ hg commit -m 'rm a'
|
|
$ echo "[extensions]" >> .hg/hgrc
|
|
$ echo "dirstateex=../dirstateexception.py" >> .hg/hgrc
|
|
$ hg up 0
|
|
abort: simulated error while recording dirstateupdates
|
|
[255]
|
|
$ hg log -r . -T '{rev}\n'
|
|
1
|
|
$ hg status
|
|
? a
|
|
$ rm .hg/hgrc
|
|
|
|
Verify that status reports deleted files correctly
|
|
$ hg add a
|
|
$ rm a
|
|
$ hg status
|
|
! a
|
|
$ hg diff
|