treedirstate: actually enable it in tests

Summary:
Previously it is not actually used.

`test-hgext-repogenerator.t` changed because treedirstate uses random
number to generate file names.

`fakedirstatewritetime.py` was updated to be treedirstate-aware. This
makes test-revert.t test-merge-tools.t test-merge1.t pass.

Reviewed By: singhsrb

Differential Revision: D7844960

fbshipit-source-id: 33a1d0d4a8e22ea5e6bb6454956884571fcf6bab
This commit is contained in:
Jun Wu 2018-05-02 16:57:01 -07:00 committed by Facebook Github Bot
parent b055d6aace
commit 77638ffcc0
18 changed files with 69 additions and 18 deletions

View File

@ -69,7 +69,7 @@ treefileprefix = 'dirstate.tree.'
configtable = {}
configitem = registrar.configitem(configtable)
configitem('treedirstate', 'useinnewrepos', default=False)
configitem('treedirstate', 'useinnewrepos', default=True)
configitem('treedirstate', 'upgradeonpull', default=False)
configitem('treedirstate', 'downgradeonpull', default=False)
configitem('treedirstate', 'cleanuppercent', default=1)

View File

@ -15,6 +15,9 @@ from mercurial import (
registrar,
util,
)
from hgext import (
treedirstate,
)
configtable = {}
configitem = registrar.configitem(configtable)
@ -71,8 +74,17 @@ def markcommitted(orig, committablectx, node):
ui = committablectx.repo().ui
return fakewrite(ui, lambda : orig(committablectx, node))
def treedirstatewrite(orig, self, st, now):
ui = self._ui
fakenow = ui.config('fakedirstatewritetime', 'fakenow')
if fakenow:
now = util.parsedate(fakenow, ['%Y%m%d%H%M'])[0]
return orig(self, st, now)
def extsetup(ui):
extensions.wrapfunction(context.workingctx, '_poststatusfixup',
_poststatusfixup)
extensions.wrapfunction(context.committablectx, 'markcommitted',
markcommitted)
extensions.wrapfunction(treedirstate.treedirstatemap, 'write',
treedirstatewrite)

View File

@ -8,6 +8,7 @@ Set vars:
Prepare repo:
$ hg init
$ hg debugtreedirstate off
$ echo this is file a > a
$ hg add a

View File

@ -15,4 +15,5 @@ No dirstate backups are left behind
$ ls .hg/dirstate* | sort
.hg/dirstate
.hg/dirstate.tree.* (glob)

View File

@ -31,6 +31,7 @@
remotefilelog
revlogv1
store
treedirstate
treemanifest
$ find .hg/store/meta | sort
.hg/store/meta
@ -71,6 +72,7 @@
remotefilelog
revlogv1
store
treedirstate
treemanifest
$ ls .hg/store/data
ca31988f085bfb945cb8115b78fabdee40f741aa
@ -112,4 +114,5 @@
remotefilelog
revlogv1
store
treedirstate
treemanifest

View File

@ -28,6 +28,7 @@
remotefilelog
revlogv1
store
treedirstate
$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@ -61,6 +62,7 @@
remotefilelog
revlogv1
store
treedirstate
$ ls .hg/store/data
4a0a19218e082a343a1b17e5333409af9d98f0f5
@ -109,3 +111,4 @@ check its contents separately.
remotefilelog
revlogv1
store
treedirstate

View File

@ -31,6 +31,7 @@ Shallow clone from full
remotefilelog
revlogv1
store
treedirstate
$ hg update
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

View File

@ -93,6 +93,7 @@ Non store repo:
.hg/data/tst.d.hg/foo.i
.hg/dirstate
.hg/fsmonitor.state (fsmonitor !)
.hg/dirstate.tree.* (glob)
.hg/last-message.txt
.hg/phaseroots
.hg/requires
@ -123,6 +124,7 @@ Non fncache repo:
.hg/cache/rbc-revs-v1
.hg/dirstate
.hg/fsmonitor.state (fsmonitor !)
.hg/dirstate.tree.* (glob)
.hg/last-message.txt
.hg/requires
.hg/store

View File

@ -246,6 +246,7 @@ r4 has hardlinks in the working dir (not just inside .hg):
2 r4/.hg/cache/rbc-revs-v1
2 r4/.hg/dirstate
2 r4/.hg/fsmonitor.state (fsmonitor !)
2 r4/.hg/dirstate.tree.* (glob)
2 r4/.hg/hgrc
2 r4/.hg/last-message.txt
2 r4/.hg/requires
@ -296,6 +297,7 @@ Update back to revision 12 in r4 should break hardlink of file f1 and f3:
2 r4/.hg/cache/rbc-revs-v1
1 r4/.hg/dirstate
1 r4/.hg/fsmonitor.state (fsmonitor !)
2 r4/.hg/dirstate.tree.* (glob)
2 r4/.hg/hgrc
2 r4/.hg/last-message.txt
2 r4/.hg/requires

View File

@ -6,18 +6,18 @@
starting commit is: -1 (goal is 2)
created *, * sec elapsed (* commits/sec, * per hour, * per day) (glob)
$ hg log -G -r ::tip
o changeset: 2:26c418a67612
o changeset: 2:2f0eabc6bc3d
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: memory commit
|
o changeset: 1:331925392347
o changeset: 1:272777df88de
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: memory commit
|
o changeset: 0:af3f7799efa3
o changeset: 0:8023a25712fb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: memory commit
@ -25,18 +25,18 @@
$ hg up -C tip
13 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg log -r tip -T'{files}'
d/d/c f/n/p i/t/b n/y/p u/d/a y/n/h (no-eol)
f/t/o h/w/l j/h/p j/o/e x/l/j x/z/b (no-eol)
$ ls */*/*
d/d/c
f/n/p
i/t/b
j/i/e
j/q/a
k/s/d
n/y/p
t/a/e
u/d/a
u/r/g
x/m/c
x/n/c
y/n/h
f/t/o
h/u/h
h/w/l
j/h/p
j/o/e
l/c/h
r/f/c
u/y/a
v/c/c
w/k/a
x/l/j
x/z/b
y/d/e

View File

@ -73,6 +73,7 @@ new directories are setgid
00660 ./.hg/cache/rbc-revs-v1
00660 ./.hg/dirstate
00660 ./.hg/fsmonitor.state (fsmonitor !)
00600 ./.hg/dirstate.tree.* (glob)
00660 ./.hg/last-message.txt
00600 ./.hg/requires
00770 ./.hg/store/
@ -120,6 +121,7 @@ group can still write everything
00770 ../push/.hg/cache/
00660 ../push/.hg/cache/branch2-base
00660 ../push/.hg/dirstate
00600 ../push/.hg/dirstate.tree.* (glob)
00660 ../push/.hg/requires
00770 ../push/.hg/store/
00660 ../push/.hg/store/00changelog.i

View File

@ -30,6 +30,7 @@ creating 'local'
generaldelta
revlogv1
store
treedirstate
$ echo this > local/foo
$ hg ci --cwd local -A -m "init"
adding foo
@ -65,6 +66,7 @@ creating repo with format.usestore=false
$ checknewrepo old
generaldelta
revlogv1
treedirstate
creating repo with format.usefncache=false
@ -75,6 +77,7 @@ creating repo with format.usefncache=false
generaldelta
revlogv1
store
treedirstate
creating repo with format.dotencode=false
@ -86,6 +89,7 @@ creating repo with format.dotencode=false
generaldelta
revlogv1
store
treedirstate
creating repo with format.dotencode=false
@ -97,6 +101,7 @@ creating repo with format.dotencode=false
fncache
revlogv1
store
treedirstate
test failure
@ -210,6 +215,7 @@ creating 'local/sub/repo'
generaldelta
revlogv1
store
treedirstate
prepare test of init of url configured from paths
@ -228,6 +234,7 @@ init should (for consistency with clone) expand the url
generaldelta
revlogv1
store
treedirstate
verify that clone also expand urls
@ -242,6 +249,7 @@ verify that clone also expand urls
generaldelta
revlogv1
store
treedirstate
clone bookmarks

View File

@ -29,6 +29,7 @@ regular clone of an existing zlib repo should still use zlib
generaldelta
revlogv1
store
treedirstate
pulled clone of zlib should use lz4
@ -40,6 +41,7 @@ pulled clone of zlib should use lz4
lz4revlog
revlogv1
store
treedirstate
disable lz4, then clone
@ -58,6 +60,7 @@ disable lz4, then clone
generaldelta
revlogv1
store
treedirstate
attempt to disable lz4 should be ignored for hardlinked clone
@ -71,6 +74,7 @@ attempt to disable lz4 should be ignored for hardlinked clone
lz4revlog
revlogv1
store
treedirstate
a new repo should use lz4 by default
@ -98,6 +102,7 @@ a new repo should use lz4 by default
lz4revlog
revlogv1
store
treedirstate
vanilla hg should bail in an lz4 repo

View File

@ -8,6 +8,7 @@ A new repository uses zlib storage, which doesn't need a requirement
generaldelta
revlogv1
store
treedirstate
$ touch foo
$ hg -q commit -A -m 'initial commit with a lot of repeated repeated repeated text to trigger compression'
@ -47,6 +48,7 @@ A requirement specifying an unknown compression engine results in bail
generaldelta
revlogv1
store
treedirstate
$ touch foo
$ hg -q commit -A -m 'initial commit with a lot of repeated repeated repeated text'
@ -70,6 +72,7 @@ with that engine or a requirement
generaldelta
revlogv1
store
treedirstate
$ hg debugrevlog -c | grep 0x78
0x78 (x) : 2 (100.00%)

View File

@ -23,6 +23,7 @@ Can create and open repo with revlog v2 requirement
exp-revlogv2.0
fncache
store
treedirstate
$ hg log

View File

@ -1,5 +1,6 @@
#require killdaemons
$ setconfig treedirstate.useinnewrepos=0
$ hg clone http://localhost:$HGPORT/ copy
abort: * (glob)
[255]

View File

@ -3,6 +3,10 @@ Let commit recurse into subrepos by default to match pre-2.0 behavior:
$ echo "[ui]" >> $HGRCPATH
$ echo "commitsubrepos = Yes" >> $HGRCPATH
Treedirstate has issues with subrepos
$ setconfig treedirstate.useinnewrepos=0
$ hg init t
$ cd t

View File

@ -1,6 +1,8 @@
$ cat >> $HGRCPATH << EOF
> [extensions]
> share =
> [treedirstate]
> useinnewrepos = False
> EOF
store and revlogv1 are required in source