D11201: walk: no longer ignore revlogs of files starting with `undo.` (issue6542)
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Tue Jul 20 06:40:36 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
Changeset 0b569c75d180 <https://phab.mercurial-scm.org/rHG0b569c75d1808f05056e3e779993186ceded830f> introduced new code in store.walk to filter out undo
files left behind by the transaction. However doing so is also filtering out
legitimate revlog file starting with `undo.`
So this changeset is mostly rolling back that change and adding tests tests to
catch this kind of error in the future.
As a result we the transaction undo files a considered again by various code (in
practice mostly persistent nodemap related). We either live with it (low
inconvenient) or explicitly work around it for now.
This should be good enough to no longer block the 5.9rc release with this issue.
We shall build something cleaner within the 6.0 cycle.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11201
AFFECTED FILES
mercurial/store.py
mercurial/upgrade_utils/engine.py
tests/test-clone-uncompressed.t
tests/test-persistent-nodemap.t
CHANGE DETAILS
diff --git a/tests/test-persistent-nodemap.t b/tests/test-persistent-nodemap.t
--- a/tests/test-persistent-nodemap.t
+++ b/tests/test-persistent-nodemap.t
@@ -997,7 +997,12 @@
$ hg -R test-repo/ debugupdatecache
$ touch $HG_TEST_STREAM_WALKED_FILE_2
$ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_3
+
+(note: the stream clone code wronly pick the `undo.` files)
+
$ cat clone-output-2
+ adding [s] undo.backup.00manifest.n (62 bytes) (known-bad-output !)
+ adding [s] undo.backup.00changelog.n (62 bytes) (known-bad-output !)
adding [s] 00manifest.n (62 bytes)
adding [s] 00manifest-*.nd (118 KB) (glob)
adding [s] 00changelog.n (62 bytes)
diff --git a/tests/test-clone-uncompressed.t b/tests/test-clone-uncompressed.t
--- a/tests/test-clone-uncompressed.t
+++ b/tests/test-clone-uncompressed.t
@@ -21,6 +21,137 @@
... fh.write(b"%d" % i) and None
$ hg -q commit -A -m 'add a lot of files'
$ hg st
+
+add files with "tricky" name:
+
+ $ echo foo > 00changelog.i
+ $ echo foo > 00changelog.d
+ $ echo foo > 00changelog.n
+ $ echo foo > 00changelog-ab349180a0405010.nd
+ $ echo foo > 00manifest.i
+ $ echo foo > 00manifest.d
+ $ echo foo > foo.i
+ $ echo foo > foo.d
+ $ echo foo > foo.n
+ $ echo foo > undo.py
+ $ echo foo > undo.i
+ $ echo foo > undo.d
+ $ echo foo > undo.n
+ $ echo foo > undo.foo.i
+ $ echo foo > undo.foo.d
+ $ echo foo > undo.foo.n
+ $ echo foo > undo.babar
+ $ mkdir savanah
+ $ echo foo > savanah/foo.i
+ $ echo foo > savanah/foo.d
+ $ echo foo > savanah/foo.n
+ $ echo foo > savanah/undo.py
+ $ echo foo > savanah/undo.i
+ $ echo foo > savanah/undo.d
+ $ echo foo > savanah/undo.n
+ $ echo foo > savanah/undo.foo.i
+ $ echo foo > savanah/undo.foo.d
+ $ echo foo > savanah/undo.foo.n
+ $ echo foo > savanah/undo.babar
+ $ mkdir data
+ $ echo foo > data/foo.i
+ $ echo foo > data/foo.d
+ $ echo foo > data/foo.n
+ $ echo foo > data/undo.py
+ $ echo foo > data/undo.i
+ $ echo foo > data/undo.d
+ $ echo foo > data/undo.n
+ $ echo foo > data/undo.foo.i
+ $ echo foo > data/undo.foo.d
+ $ echo foo > data/undo.foo.n
+ $ echo foo > data/undo.babar
+ $ mkdir meta
+ $ echo foo > meta/foo.i
+ $ echo foo > meta/foo.d
+ $ echo foo > meta/foo.n
+ $ echo foo > meta/undo.py
+ $ echo foo > meta/undo.i
+ $ echo foo > meta/undo.d
+ $ echo foo > meta/undo.n
+ $ echo foo > meta/undo.foo.i
+ $ echo foo > meta/undo.foo.d
+ $ echo foo > meta/undo.foo.n
+ $ echo foo > meta/undo.babar
+ $ mkdir store
+ $ echo foo > store/foo.i
+ $ echo foo > store/foo.d
+ $ echo foo > store/foo.n
+ $ echo foo > store/undo.py
+ $ echo foo > store/undo.i
+ $ echo foo > store/undo.d
+ $ echo foo > store/undo.n
+ $ echo foo > store/undo.foo.i
+ $ echo foo > store/undo.foo.d
+ $ echo foo > store/undo.foo.n
+ $ echo foo > store/undo.babar
+ $ hg add .
+ adding 00changelog-ab349180a0405010.nd
+ adding 00changelog.d
+ adding 00changelog.i
+ adding 00changelog.n
+ adding 00manifest.d
+ adding 00manifest.i
+ adding data/foo.d
+ adding data/foo.i
+ adding data/foo.n
+ adding data/undo.babar
+ adding data/undo.d
+ adding data/undo.foo.d
+ adding data/undo.foo.i
+ adding data/undo.foo.n
+ adding data/undo.i
+ adding data/undo.n
+ adding data/undo.py
+ adding foo.d
+ adding foo.i
+ adding foo.n
+ adding meta/foo.d
+ adding meta/foo.i
+ adding meta/foo.n
+ adding meta/undo.babar
+ adding meta/undo.d
+ adding meta/undo.foo.d
+ adding meta/undo.foo.i
+ adding meta/undo.foo.n
+ adding meta/undo.i
+ adding meta/undo.n
+ adding meta/undo.py
+ adding savanah/foo.d
+ adding savanah/foo.i
+ adding savanah/foo.n
+ adding savanah/undo.babar
+ adding savanah/undo.d
+ adding savanah/undo.foo.d
+ adding savanah/undo.foo.i
+ adding savanah/undo.foo.n
+ adding savanah/undo.i
+ adding savanah/undo.n
+ adding savanah/undo.py
+ adding store/foo.d
+ adding store/foo.i
+ adding store/foo.n
+ adding store/undo.babar
+ adding store/undo.d
+ adding store/undo.foo.d
+ adding store/undo.foo.i
+ adding store/undo.foo.n
+ adding store/undo.i
+ adding store/undo.n
+ adding store/undo.py
+ adding undo.babar
+ adding undo.d
+ adding undo.foo.d
+ adding undo.foo.i
+ adding undo.foo.n
+ adding undo.i
+ adding undo.n
+ adding undo.py
+ $ hg ci -m 'add files with "tricky" name'
$ hg --config server.uncompressed=false serve -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ cd ..
@@ -80,8 +211,8 @@
adding changesets
adding manifests
adding file changes
- added 2 changesets with 1025 changes to 1025 files
- new changesets 96ee1d7354c4:c17445101a72
+ added 3 changesets with 1086 changes to 1086 files
+ new changesets 96ee1d7354c4:7406a3463c3d
$ get-with-headers.py $LOCALIP:$HGPORT '?cmd=getbundle' content-type --bodyfile body --hgproto 0.2 --requestheader "x-hgarg-1=bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps&cg=0&common=0000000000000000000000000000000000000000&heads=c17445101a72edac06facd130d14808dfbd5c7c2&stream=1"
200 Script output follows
@@ -147,8 +278,8 @@
adding changesets
adding manifests
adding file changes
- added 2 changesets with 1025 changes to 1025 files
- new changesets 96ee1d7354c4:c17445101a72
+ added 3 changesets with 1086 changes to 1086 files
+ new changesets 96ee1d7354c4:7406a3463c3d
$ get-with-headers.py $LOCALIP:$HGPORT '?cmd=getbundle' content-type --bodyfile body --hgproto 0.2 --requestheader "x-hgarg-1=bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps&cg=0&common=0000000000000000000000000000000000000000&heads=c17445101a72edac06facd130d14808dfbd5c7c2&stream=1"
200 Script output follows
@@ -178,10 +309,10 @@
#if stream-legacy
$ hg clone --stream -U http://localhost:$HGPORT clone1
streaming all changes
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (*/sec) (glob) (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
searching for changes
no changes found
$ cat server/errors.txt
@@ -189,10 +320,10 @@
#if stream-bundle2
$ hg clone --stream -U http://localhost:$HGPORT clone1
streaming all changes
- 1030 files to transfer, 96.5 KB of data (no-zstd !)
- transferred 96.5 KB in * seconds (*/sec) (glob) (no-zstd !)
- 1030 files to transfer, 93.6 KB of data (zstd !)
- transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !)
+ 1091 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (*/sec) (glob) (no-zstd !)
+ 1091 files to transfer, 98.5 KB of data (zstd !)
+ transferred 98.5 KB in * seconds (* */sec) (glob) (zstd !)
$ ls -1 clone1/.hg/cache
branch2-base
@@ -217,63 +348,63 @@
#if no-zstd no-rust
$ f --size --hex --bytes 256 body
- body: size=112262
+ body: size=118551
0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......|
- 0010: 7f 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
- 0020: 05 09 04 0c 44 62 79 74 65 63 6f 75 6e 74 39 38 |....Dbytecount98|
- 0030: 37 37 35 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |775filecount1030|
- 0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote|
- 0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%|
- 0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2|
- 0070: 43 72 65 76 6c 6f 67 76 31 25 32 43 73 70 61 72 |Crevlogv1%2Cspar|
- 0080: 73 65 72 65 76 6c 6f 67 25 32 43 73 74 6f 72 65 |serevlog%2Cstore|
- 0090: 00 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 00 |....s.Bdata/0.i.|
- 00a0: 03 00 01 00 00 00 00 00 00 00 02 00 00 00 01 00 |................|
- 00b0: 00 00 00 00 00 00 01 ff ff ff ff ff ff ff ff 80 |................|
- 00c0: 29 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c 69 |)c.I.#....Vg.g,i|
- 00d0: d1 ec 39 00 00 00 00 00 00 00 00 00 00 00 00 75 |..9............u|
- 00e0: 30 73 08 42 64 61 74 61 2f 31 2e 69 00 03 00 01 |0s.Bdata/1.i....|
- 00f0: 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 00 |................|
+ 0010: 80 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
+ 0020: 06 09 04 0c 44 62 79 74 65 63 6f 75 6e 74 31 30 |....Dbytecount10|
+ 0030: 33 36 39 35 66 69 6c 65 63 6f 75 6e 74 31 30 39 |3695filecount109|
+ 0040: 31 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 |1requirementsdot|
+ 0050: 65 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 |encode%2Cfncache|
+ 0060: 25 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 |%2Cgeneraldelta%|
+ 0070: 32 43 72 65 76 6c 6f 67 76 31 25 32 43 73 70 61 |2Crevlogv1%2Cspa|
+ 0080: 72 73 65 72 65 76 6c 6f 67 25 32 43 73 74 6f 72 |rserevlog%2Cstor|
+ 0090: 65 00 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 |e....s.Bdata/0.i|
+ 00a0: 00 03 00 01 00 00 00 00 00 00 00 02 00 00 00 01 |................|
+ 00b0: 00 00 00 00 00 00 00 01 ff ff ff ff ff ff ff ff |................|
+ 00c0: 80 29 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c |.)c.I.#....Vg.g,|
+ 00d0: 69 d1 ec 39 00 00 00 00 00 00 00 00 00 00 00 00 |i..9............|
+ 00e0: 75 30 73 26 45 64 61 74 61 2f 30 30 63 68 61 6e |u0s&Edata/00chan|
+ 00f0: 67 65 6c 6f 67 2d 61 62 33 34 39 31 38 30 61 30 |gelog-ab349180a0|
#endif
#if zstd no-rust
$ f --size --hex --bytes 256 body
- body: size=109410
+ body: size=115738
0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......|
- 0010: 99 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
- 0020: 05 09 04 0c 5e 62 79 74 65 63 6f 75 6e 74 39 35 |....^bytecount95|
- 0030: 38 39 37 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |897filecount1030|
- 0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote|
- 0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%|
- 0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2|
- 0070: 43 72 65 76 6c 6f 67 2d 63 6f 6d 70 72 65 73 73 |Crevlog-compress|
- 0080: 69 6f 6e 2d 7a 73 74 64 25 32 43 72 65 76 6c 6f |ion-zstd%2Crevlo|
- 0090: 67 76 31 25 32 43 73 70 61 72 73 65 72 65 76 6c |gv1%2Csparserevl|
- 00a0: 6f 67 25 32 43 73 74 6f 72 65 00 00 80 00 73 08 |og%2Cstore....s.|
- 00b0: 42 64 61 74 61 2f 30 2e 69 00 03 00 01 00 00 00 |Bdata/0.i.......|
- 00c0: 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 |................|
- 00d0: 01 ff ff ff ff ff ff ff ff 80 29 63 a0 49 d3 23 |..........)c.I.#|
- 00e0: 87 bf ce fe 56 67 92 67 2c 69 d1 ec 39 00 00 00 |....Vg.g,i..9...|
- 00f0: 00 00 00 00 00 00 00 00 00 75 30 73 08 42 64 61 |.........u0s.Bda|
+ 0010: 9a 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
+ 0020: 06 09 04 0c 5e 62 79 74 65 63 6f 75 6e 74 31 30 |....^bytecount10|
+ 0030: 30 38 35 36 66 69 6c 65 63 6f 75 6e 74 31 30 39 |0856filecount109|
+ 0040: 31 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 |1requirementsdot|
+ 0050: 65 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 |encode%2Cfncache|
+ 0060: 25 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 |%2Cgeneraldelta%|
+ 0070: 32 43 72 65 76 6c 6f 67 2d 63 6f 6d 70 72 65 73 |2Crevlog-compres|
+ 0080: 73 69 6f 6e 2d 7a 73 74 64 25 32 43 72 65 76 6c |sion-zstd%2Crevl|
+ 0090: 6f 67 76 31 25 32 43 73 70 61 72 73 65 72 65 76 |ogv1%2Csparserev|
+ 00a0: 6c 6f 67 25 32 43 73 74 6f 72 65 00 00 80 00 73 |log%2Cstore....s|
+ 00b0: 08 42 64 61 74 61 2f 30 2e 69 00 03 00 01 00 00 |.Bdata/0.i......|
+ 00c0: 00 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 |................|
+ 00d0: 00 01 ff ff ff ff ff ff ff ff 80 29 63 a0 49 d3 |...........)c.I.|
+ 00e0: 23 87 bf ce fe 56 67 92 67 2c 69 d1 ec 39 00 00 |#....Vg.g,i..9..|
+ 00f0: 00 00 00 00 00 00 00 00 00 00 75 30 73 26 45 64 |..........u0s&Ed|
#endif
#if zstd rust no-dirstate-v2
$ f --size --hex --bytes 256 body
- body: size=109431
+ body: size=115759
0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......|
- 0010: ae 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
- 0020: 05 09 04 0c 73 62 79 74 65 63 6f 75 6e 74 39 35 |....sbytecount95|
- 0030: 38 39 37 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |897filecount1030|
- 0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote|
- 0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%|
- 0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2|
- 0070: 43 70 65 72 73 69 73 74 65 6e 74 2d 6e 6f 64 65 |Cpersistent-node|
- 0080: 6d 61 70 25 32 43 72 65 76 6c 6f 67 2d 63 6f 6d |map%2Crevlog-com|
- 0090: 70 72 65 73 73 69 6f 6e 2d 7a 73 74 64 25 32 43 |pression-zstd%2C|
- 00a0: 72 65 76 6c 6f 67 76 31 25 32 43 73 70 61 72 73 |revlogv1%2Cspars|
- 00b0: 65 72 65 76 6c 6f 67 25 32 43 73 74 6f 72 65 00 |erevlog%2Cstore.|
- 00c0: 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 00 03 |...s.Bdata/0.i..|
- 00d0: 00 01 00 00 00 00 00 00 00 02 00 00 00 01 00 00 |................|
- 00e0: 00 00 00 00 00 01 ff ff ff ff ff ff ff ff 80 29 |...............)|
- 00f0: 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c 69 d1 |c.I.#....Vg.g,i.|
+ 0010: af 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
+ 0020: 06 09 04 0c 73 62 79 74 65 63 6f 75 6e 74 31 30 |....sbytecount10|
+ 0030: 30 38 35 36 66 69 6c 65 63 6f 75 6e 74 31 30 39 |0856filecount109|
+ 0040: 31 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 |1requirementsdot|
+ 0050: 65 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 |encode%2Cfncache|
+ 0060: 25 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 |%2Cgeneraldelta%|
+ 0070: 32 43 70 65 72 73 69 73 74 65 6e 74 2d 6e 6f 64 |2Cpersistent-nod|
+ 0080: 65 6d 61 70 25 32 43 72 65 76 6c 6f 67 2d 63 6f |emap%2Crevlog-co|
+ 0090: 6d 70 72 65 73 73 69 6f 6e 2d 7a 73 74 64 25 32 |mpression-zstd%2|
+ 00a0: 43 72 65 76 6c 6f 67 76 31 25 32 43 73 70 61 72 |Crevlogv1%2Cspar|
+ 00b0: 73 65 72 65 76 6c 6f 67 25 32 43 73 74 6f 72 65 |serevlog%2Cstore|
+ 00c0: 00 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 00 |....s.Bdata/0.i.|
+ 00d0: 03 00 01 00 00 00 00 00 00 00 02 00 00 00 01 00 |................|
+ 00e0: 00 00 00 00 00 00 01 ff ff ff ff ff ff ff ff 80 |................|
+ 00f0: 29 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c 69 |)c.I.#....Vg.g,i|
#endif
#if zstd dirstate-v2
$ f --size --hex --bytes 256 body
@@ -301,20 +432,20 @@
#if stream-legacy
$ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed
streaming all changes
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (*/sec) (glob) (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
searching for changes
no changes found
#endif
#if stream-bundle2
$ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed
streaming all changes
- 1030 files to transfer, 96.5 KB of data (no-zstd !)
- transferred 96.5 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1030 files to transfer, 93.6 KB of data (zstd !)
- transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !)
+ 1091 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1091 files to transfer, 98.5 KB of data (zstd !)
+ transferred 98.5 KB in * seconds (* */sec) (glob) (zstd !)
#endif
Clone with background file closing enabled
@@ -326,12 +457,12 @@
sending branchmap command
streaming all changes
sending stream_out command
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
starting 4 threads for background file closing
updating the branch cache
- transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ transferred 101 KB in * seconds (*/sec) (glob) (no-zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
query 1; heads
sending batch command
searching for changes
@@ -358,15 +489,15 @@
bundle2-input-bundle: with-transaction
bundle2-input-part: "stream2" (params: 3 mandatory) supported
applying stream bundle
- 1030 files to transfer, 96.5 KB of data (no-zstd !)
- 1030 files to transfer, 93.6 KB of data (zstd !)
+ 1091 files to transfer, 101 KB of data (no-zstd !)
+ 1091 files to transfer, 98.5 KB of data (zstd !)
starting 4 threads for background file closing
starting 4 threads for background file closing
updating the branch cache
- transferred 96.5 KB in * seconds (* */sec) (glob) (no-zstd !)
- bundle2-input-part: total payload size 112094 (no-zstd !)
- transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !)
- bundle2-input-part: total payload size 109216 (zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ bundle2-input-part: total payload size 118382 (no-zstd !)
+ transferred 98.5 KB in * seconds (* */sec) (glob) (zstd !)
+ bundle2-input-part: total payload size 115543 (zstd !)
bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-bundle: 2 parts total
checking for updated bookmarks
@@ -383,8 +514,8 @@
adding changesets
adding manifests
adding file changes
- added 1 changesets with 1 changes to 1 files
- new changesets 96ee1d7354c4
+ added 2 changesets with 1025 changes to 1025 files
+ new changesets 96ee1d7354c4:c17445101a72
$ killdaemons.py
@@ -398,20 +529,20 @@
#if stream-legacy
$ hg clone --stream -U http://localhost:$HGPORT secret-allowed
streaming all changes
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (*/sec) (glob) (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
searching for changes
no changes found
#endif
#if stream-bundle2
$ hg clone --stream -U http://localhost:$HGPORT secret-allowed
streaming all changes
- 1030 files to transfer, 96.5 KB of data (no-zstd !)
- transferred 96.5 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1030 files to transfer, 93.6 KB of data (zstd !)
- transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !)
+ 1091 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1091 files to transfer, 98.5 KB of data (zstd !)
+ transferred 98.5 KB in * seconds (* */sec) (glob) (zstd !)
#endif
$ killdaemons.py
@@ -428,8 +559,8 @@
adding changesets
adding manifests
adding file changes
- added 1 changesets with 1 changes to 1 files
- new changesets 96ee1d7354c4
+ added 2 changesets with 1025 changes to 1025 files
+ new changesets 96ee1d7354c4:c17445101a72
$ killdaemons.py
@@ -458,8 +589,8 @@
adding changesets
adding manifests
adding file changes
- added 1 changesets with 1 changes to 1 files
- new changesets 96ee1d7354c4
+ added 2 changesets with 1025 changes to 1025 files
+ new changesets 96ee1d7354c4:c17445101a72
Stream clone while repo is changing:
@@ -550,27 +681,33 @@
#if stream-legacy
$ hg clone --stream http://localhost:$HGPORT with-bookmarks
streaming all changes
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- transferred 96.3 KB in * seconds (*) (glob) (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (*) (glob) (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
searching for changes
no changes found
updating to branch default
- 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1086 files updated, 0 files merged, 0 files removed, 0 files unresolved
#endif
#if stream-bundle2
$ hg clone --stream http://localhost:$HGPORT with-bookmarks
streaming all changes
- 1033 files to transfer, 96.6 KB of data (no-zstd !)
- transferred 96.6 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1033 files to transfer, 93.8 KB of data (zstd !)
- transferred 93.8 KB in * seconds (* */sec) (glob) (zstd !)
+ 1094 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1094 files to transfer, 98.7 KB of data (zstd !)
+ transferred 98.7 KB in * seconds (* */sec) (glob) (zstd !)
updating to branch default
- 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1086 files updated, 0 files merged, 0 files removed, 0 files unresolved
#endif
+ $ hg verify -R with-bookmarks
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ checked 3 changesets with 1086 changes to 1086 files
$ hg -R with-bookmarks bookmarks
- some-bookmark 1:c17445101a72
+ some-bookmark 2:7406a3463c3d
Stream repository with phases
-----------------------------
@@ -580,32 +717,40 @@
$ hg -R server phase -r 'all()'
0: draft
1: draft
+ 2: draft
#if stream-legacy
$ hg clone --stream http://localhost:$HGPORT phase-publish
streaming all changes
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- transferred 96.3 KB in * seconds (*) (glob) (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (*) (glob) (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
searching for changes
no changes found
updating to branch default
- 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1086 files updated, 0 files merged, 0 files removed, 0 files unresolved
#endif
#if stream-bundle2
$ hg clone --stream http://localhost:$HGPORT phase-publish
streaming all changes
- 1033 files to transfer, 96.6 KB of data (no-zstd !)
- transferred 96.6 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1033 files to transfer, 93.8 KB of data (zstd !)
- transferred 93.8 KB in * seconds (* */sec) (glob) (zstd !)
+ 1094 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1094 files to transfer, 98.7 KB of data (zstd !)
+ transferred 98.7 KB in * seconds (* */sec) (glob) (zstd !)
updating to branch default
- 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1086 files updated, 0 files merged, 0 files removed, 0 files unresolved
#endif
+ $ hg verify -R phase-publish
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ checked 3 changesets with 1086 changes to 1086 files
$ hg -R phase-publish phase -r 'all()'
0: public
1: public
+ 2: public
Clone as non publishing
@@ -624,31 +769,39 @@
$ hg clone --stream http://localhost:$HGPORT phase-no-publish
streaming all changes
- 1027 files to transfer, 96.3 KB of data (no-zstd !)
- transferred 96.3 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1027 files to transfer, 93.5 KB of data (zstd !)
- transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !)
+ 1088 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1088 files to transfer, 98.4 KB of data (zstd !)
+ transferred 98.4 KB in * seconds (*/sec) (glob) (zstd !)
searching for changes
no changes found
updating to branch default
- 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1086 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R phase-no-publish phase -r 'all()'
0: public
1: public
+ 2: public
#endif
#if stream-bundle2
$ hg clone --stream http://localhost:$HGPORT phase-no-publish
streaming all changes
- 1034 files to transfer, 96.7 KB of data (no-zstd !)
- transferred 96.7 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1034 files to transfer, 93.9 KB of data (zstd !)
- transferred 93.9 KB in * seconds (* */sec) (glob) (zstd !)
+ 1095 files to transfer, 101 KB of data (no-zstd !)
+ transferred 101 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1095 files to transfer, 98.7 KB of data (zstd !)
+ transferred 98.7 KB in * seconds (* */sec) (glob) (zstd !)
updating to branch default
- 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 1086 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R phase-no-publish phase -r 'all()'
0: draft
1: draft
+ 2: draft
#endif
+ $ hg verify -R phase-no-publish
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ checked 3 changesets with 1086 changes to 1086 files
$ killdaemons.py
@@ -678,6 +831,7 @@
obsoleted 1 changesets
$ hg up null -q
$ hg log -T '{rev}: {phase}\n'
+ 2: draft
1: draft
0: draft
$ hg serve -p $HGPORT -d --pid-file=hg.pid
@@ -686,15 +840,22 @@
$ hg clone -U --stream http://localhost:$HGPORT with-obsolescence
streaming all changes
- 1035 files to transfer, 97.1 KB of data (no-zstd !)
- transferred 97.1 KB in * seconds (* */sec) (glob) (no-zstd !)
- 1035 files to transfer, 94.3 KB of data (zstd !)
- transferred 94.3 KB in * seconds (* */sec) (glob) (zstd !)
+ 1096 files to transfer, 102 KB of data (no-zstd !)
+ transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !)
+ 1096 files to transfer, 99.1 KB of data (zstd !)
+ transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !)
$ hg -R with-obsolescence log -T '{rev}: {phase}\n'
+ 2: draft
1: draft
0: draft
$ hg debugobsolete -R with-obsolescence
- 50382b884f66690b7045cac93a540cba4d4c906f 0 {c17445101a72edac06facd130d14808dfbd5c7c2} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ aa82d3f59e13f41649d8ba3324e1ac8849ba78e7 0 {7406a3463c3de22c4288b4306d199705369a285a} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ $ hg verify -R with-obsolescence
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ checked 4 changesets with 1087 changes to 1086 files
$ hg clone -U --stream --config experimental.evolution=0 http://localhost:$HGPORT with-obsolescence-no-evolution
streaming all changes
diff --git a/mercurial/upgrade_utils/engine.py b/mercurial/upgrade_utils/engine.py
--- a/mercurial/upgrade_utils/engine.py
+++ b/mercurial/upgrade_utils/engine.py
@@ -200,6 +200,17 @@
if not rl_type & store.FILEFLAGS_REVLOG_MAIN:
continue
+ # the store.walk function will wrongly pickup transaction backup and
+ # get confused. As a quick fix for 5.9 release, we ignore those.
+ # (this is not a module constants because it seems better to keep the
+ # hack together)
+ skip_undo = (
+ b'undo.backup.00changelog.i',
+ b'undo.backup.00manifest.i',
+ )
+ if unencoded in skip_undo:
+ continue
+
rl = _revlogfrompath(srcrepo, rl_type, unencoded)
info = rl.storageinfo(
diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -405,6 +405,8 @@
REVLOG_FILES_VOLATILE_EXT = (b'.n', b'.nd')
# some exception to the above matching
+#
+# XXX This is currently not in use because of issue6542
EXCLUDED = re.compile(b'.*undo\.[^/]+\.(nd?|i)$')
@@ -415,9 +417,12 @@
def revlog_type(f):
- if f.endswith(REVLOG_FILES_MAIN_EXT) and EXCLUDED.match(f) is None:
+ # XXX we need to filter `undo.` created by the transaction here, however
+ # being naive about it also filter revlog for `undo.*` files, leading to
+ # issue6542. So we no longer use EXCLUDED.
+ if f.endswith(REVLOG_FILES_MAIN_EXT):
return FILEFLAGS_REVLOG_MAIN
- elif f.endswith(REVLOG_FILES_OTHER_EXT) and EXCLUDED.match(f) is None:
+ elif f.endswith(REVLOG_FILES_OTHER_EXT):
t = FILETYPE_FILELOG_OTHER
if f.endswith(REVLOG_FILES_VOLATILE_EXT):
t |= FILEFLAGS_VOLATILE
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list