2019-12-10 02:24:31 +03:00
|
|
|
#chg-compatible
|
|
|
|
|
2018-06-14 03:49:29 +03:00
|
|
|
$ setconfig format.dirstate=2
|
2018-06-11 23:49:45 +03:00
|
|
|
|
2010-08-15 20:25:29 +04:00
|
|
|
------ Test dirstate._dirs refcounting
|
2010-08-15 20:24:49 +04:00
|
|
|
|
|
|
|
$ 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
|
2017-12-11 06:50:57 +03:00
|
|
|
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
|
2012-06-27 23:28:26 +04:00
|
|
|
|
|
|
|
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]
|
|
|
|
|
2010-08-15 20:25:29 +04:00
|
|
|
$ cd ..
|
|
|
|
|
2010-09-24 12:13:49 +04:00
|
|
|
Issue1790: dirstate entry locked into unset if file mtime is set into
|
|
|
|
the future
|
2010-08-15 20:25:29 +04:00
|
|
|
|
|
|
|
Prepare test repo:
|
|
|
|
|
|
|
|
$ hg init u
|
|
|
|
$ cd u
|
|
|
|
$ echo a > a
|
|
|
|
$ hg add
|
|
|
|
adding a
|
|
|
|
$ hg ci -m1
|
|
|
|
|
2012-10-09 02:50:42 +04:00
|
|
|
Test modulo storage/comparison of absurd dates:
|
|
|
|
|
2013-04-30 17:56:33 +04:00
|
|
|
#if no-aix
|
2012-10-09 02:50:42 +04:00
|
|
|
$ touch -t 195001011200 a
|
|
|
|
$ hg st
|
|
|
|
$ hg debugstate
|
|
|
|
n 644 2 2018-01-19 15:14:08 a
|
2013-04-30 17:56:33 +04:00
|
|
|
#endif
|
2014-09-06 02:36:56 +04:00
|
|
|
|
|
|
|
Verify that exceptions during a dirstate change leave the dirstate
|
|
|
|
coherent (issue4353)
|
|
|
|
|
|
|
|
$ cat > ../dirstateexception.py <<EOF
|
2017-08-22 22:50:59 +03:00
|
|
|
> from __future__ import absolute_import
|
2019-01-30 03:25:33 +03:00
|
|
|
> from edenscm.mercurial import (
|
2017-08-22 22:50:59 +03:00
|
|
|
> error,
|
|
|
|
> extensions,
|
|
|
|
> merge,
|
|
|
|
> )
|
2014-09-06 02:36:56 +04:00
|
|
|
>
|
|
|
|
> def wraprecordupdates(orig, repo, actions, branchmerge):
|
2015-10-08 22:55:45 +03:00
|
|
|
> raise error.Abort("simulated error while recording dirstateupdates")
|
2014-09-06 02:36:56 +04:00
|
|
|
>
|
|
|
|
> 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
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg up 'desc(1)'
|
2014-09-06 02:36:56 +04:00
|
|
|
abort: simulated error while recording dirstateupdates
|
|
|
|
[255]
|
2020-10-08 06:58:22 +03:00
|
|
|
$ hg log -r . -T '{node}\n'
|
|
|
|
dfda8c2e7522c4207035f267703c5f27af5a5bf7
|
2014-09-06 02:36:56 +04:00
|
|
|
$ hg status
|
|
|
|
? a
|
2019-10-15 06:53:35 +03:00
|
|
|
$ rm .hg/hgrc
|
|
|
|
|
|
|
|
Verify that status reports deleted files correctly
|
|
|
|
$ hg add a
|
|
|
|
$ rm a
|
|
|
|
$ hg status
|
|
|
|
! a
|
|
|
|
$ hg diff
|
2020-08-28 19:39:34 +03:00
|
|
|
|
|
|
|
Dirstate should block addition of paths with relative parent components
|
|
|
|
$ hg up -C .
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ ls
|
|
|
|
$ hg debugsh -c "repo.dirstate.add('foo/../b')"
|
|
|
|
abort: cannot add path with relative parents: foo/../b
|
|
|
|
[255]
|
|
|
|
$ touch b
|
|
|
|
$ mkdir foo
|
|
|
|
$ hg add foo/../b
|
|
|
|
$ hg commit -m "add b"
|
|
|
|
$ hg status --change .
|
|
|
|
A b
|