test-manifest.t
278 lines
| 7.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-manifest.t
Matt Mackall
|
r12328 | Source bundle was generated with the following script: | ||
Adrian Buehlmann
|
r12253 | # hg init | ||
# echo a > a | ||||
# ln -s a l | ||||
# hg ci -Ama -d'0 0' | ||||
# mkdir b | ||||
# echo a > b/a | ||||
# chmod +x b/a | ||||
# hg ci -Amb -d'1 0' | ||||
$ hg init | ||||
Gregory Szorc
|
r37455 | $ hg unbundle "$TESTDIR/bundles/test-manifest.hg" | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 3 changes to 3 files | ||||
Boris Feld
|
r39516 | new changesets b73562a03cfe:5bdc995175ba (2 drafts) | ||
Gregory Szorc
|
r37455 | (run 'hg update' to get a working copy) | ||
Adrian Buehlmann
|
r12253 | |||
The next call is expected to return nothing: | ||||
$ hg manifest | ||||
$ hg co | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg manifest | ||||
a | ||||
b/a | ||||
l | ||||
Matt Mackall
|
r22423 | $ hg files -vr . | ||
2 a | ||||
Matt Harbison
|
r35394 | 2 x b/a | ||
Matt Mackall
|
r22423 | 1 l l | ||
$ hg files -r . -X b | ||||
a | ||||
l | ||||
Yuya Nishihara
|
r38559 | $ hg files -T '{path} {size} {flags}\n' | ||
a 2 | ||||
b/a 2 x | ||||
l 1 l | ||||
Yuya Nishihara
|
r38560 | $ hg files -T '{path} {node|shortest}\n' -r. | ||
a 5bdc | ||||
b/a 5bdc | ||||
l 5bdc | ||||
Matt Mackall
|
r22423 | |||
Adrian Buehlmann
|
r12253 | $ hg manifest -v | ||
644 a | ||||
755 * b/a | ||||
644 @ l | ||||
Yuya Nishihara
|
r38561 | $ hg manifest -T '{path} {rev}\n' | ||
a 1 | ||||
b/a 1 | ||||
l 1 | ||||
Adrian Buehlmann
|
r12253 | |||
$ hg manifest --debug | ||||
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a | ||||
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 755 * b/a | ||||
047b75c6d7a3ef6a2243bd0e99f94f6ea6683597 644 @ l | ||||
$ hg manifest -r 0 | ||||
a | ||||
l | ||||
$ hg manifest -r 1 | ||||
a | ||||
b/a | ||||
l | ||||
$ hg manifest -r tip | ||||
a | ||||
b/a | ||||
l | ||||
$ hg manifest tip | ||||
a | ||||
b/a | ||||
l | ||||
Adrian Buehlmann
|
r14399 | $ hg manifest --all | ||
Gregory Szorc
|
r37456 | a | ||
b/a | ||||
l | ||||
Adrian Buehlmann
|
r12253 | |||
The next two calls are expected to abort: | ||||
$ hg manifest -r 2 | ||||
abort: unknown revision '2'! | ||||
Matt Mackall
|
r12316 | [255] | ||
Adrian Buehlmann
|
r12253 | |||
$ hg manifest -r tip tip | ||||
abort: please specify just one revision | ||||
Matt Mackall
|
r12316 | [255] | ||
r42106 | ||||
Testing the manifest full text cache utility | ||||
-------------------------------------------- | ||||
Reminder of the manifest log content | ||||
$ hg log --debug | grep 'manifest:' | ||||
manifest: 1:1e01206b1d2f72bd55f2a33fa8ccad74144825b7 | ||||
manifest: 0:fce2a30dedad1eef4da95ca1dc0004157aa527cf | ||||
Showing the content of the caches after the above operations | ||||
$ hg debugmanifestfulltextcache | ||||
r42130 | cache contains 1 manifest entries, in order of most to least recent: | |||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
total cache data size 157 bytes, on-disk 157 bytes | ||||
r42108 | ||||
r42129 | (Clearing the cache in case of any content) | |||
$ hg debugmanifestfulltextcache --clear | ||||
r42108 | Adding a new persistent entry in the cache | |||
$ hg debugmanifestfulltextcache --add 1e01206b1d2f72bd55f2a33fa8ccad74144825b7 | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 1 manifest entries, in order of most to least recent: | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
total cache data size 157 bytes, on-disk 157 bytes | ||||
r42110 | ||||
Check we don't duplicated entry (added from the debug command) | ||||
$ hg debugmanifestfulltextcache --add 1e01206b1d2f72bd55f2a33fa8ccad74144825b7 | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 1 manifest entries, in order of most to least recent: | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
total cache data size 157 bytes, on-disk 157 bytes | ||||
r42111 | ||||
Adding a second entry | ||||
$ hg debugmanifestfulltextcache --add fce2a30dedad1eef4da95ca1dc0004157aa527cf | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 2 manifest entries, in order of most to least recent: | ||||
id: fce2a30dedad1eef4da95ca1dc0004157aa527cf, size 87 bytes | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
total cache data size 268 bytes, on-disk 268 bytes | ||||
r42112 | ||||
Accessing the initial entry again, refresh their order | ||||
$ hg debugmanifestfulltextcache --add 1e01206b1d2f72bd55f2a33fa8ccad74144825b7 | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 2 manifest entries, in order of most to least recent: | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
id: fce2a30dedad1eef4da95ca1dc0004157aa527cf, size 87 bytes | ||||
total cache data size 268 bytes, on-disk 268 bytes | ||||
r42113 | ||||
Check cache clearing | ||||
$ hg debugmanifestfulltextcache --clear | ||||
$ hg debugmanifestfulltextcache | ||||
cache empty | ||||
r42124 | ||||
Check adding multiple entry in one go: | ||||
$ hg debugmanifestfulltextcache --add fce2a30dedad1eef4da95ca1dc0004157aa527cf --add 1e01206b1d2f72bd55f2a33fa8ccad74144825b7 | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 2 manifest entries, in order of most to least recent: | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
id: fce2a30dedad1eef4da95ca1dc0004157aa527cf, size 87 bytes | ||||
total cache data size 268 bytes, on-disk 268 bytes | ||||
$ hg debugmanifestfulltextcache --clear | ||||
r42126 | ||||
Test caching behavior on actual operation | ||||
----------------------------------------- | ||||
Make sure we start empty | ||||
$ hg debugmanifestfulltextcache | ||||
cache empty | ||||
Commit should have the new node cached: | ||||
$ echo a >> b/a | ||||
$ hg commit -m 'foo' | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 2 manifest entries, in order of most to least recent: | ||||
id: 26b8653b67af8c1a0a0317c4ee8dac50a41fdb65, size 133 bytes | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
total cache data size 314 bytes, on-disk 314 bytes | ||||
$ hg log -r 'ancestors(., 1)' --debug | grep 'manifest:' | ||||
manifest: 1:1e01206b1d2f72bd55f2a33fa8ccad74144825b7 | ||||
manifest: 2:26b8653b67af8c1a0a0317c4ee8dac50a41fdb65 | ||||
r42130 | ||||
hg update should warm the cache too | ||||
(force dirstate check to avoid flackiness in manifest order) | ||||
$ hg debugrebuilddirstate | ||||
$ hg update 0 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg debugmanifestfulltextcache | ||||
cache contains 3 manifest entries, in order of most to least recent: | ||||
id: fce2a30dedad1eef4da95ca1dc0004157aa527cf, size 87 bytes | ||||
id: 26b8653b67af8c1a0a0317c4ee8dac50a41fdb65, size 133 bytes | ||||
id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes | ||||
total cache data size 425 bytes, on-disk 425 bytes | ||||
$ hg log -r '0' --debug | grep 'manifest:' | ||||
manifest: 0:fce2a30dedad1eef4da95ca1dc0004157aa527cf | ||||
Matt Harbison
|
r42568 | |||
Test file removal (especially with pure). The tests are crafted such that there | ||||
will be contiguous spans of existing entries to ensure that is handled properly. | ||||
(In this case, a.txt, aa.txt and c.txt, cc.txt, and ccc.txt) | ||||
$ cat > $TESTTMP/manifest.py <<EOF | ||||
> from mercurial import ( | ||||
> extensions, | ||||
> manifest, | ||||
> ) | ||||
> def extsetup(ui): | ||||
> manifest.FASTDELTA_TEXTDIFF_THRESHOLD = 0 | ||||
> EOF | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> manifest = $TESTTMP/manifest.py | ||||
> EOF | ||||
Matt Harbison
|
r42569 | Pure removes should actually remove all dropped entries | ||
Matt Harbison
|
r42568 | |||
$ hg init repo | ||||
$ cd repo | ||||
$ echo a > a.txt | ||||
$ echo aa > aa.txt | ||||
$ echo b > b.txt | ||||
$ echo c > c.txt | ||||
$ echo c > cc.txt | ||||
$ echo c > ccc.txt | ||||
$ echo b > d.txt | ||||
$ echo c > e.txt | ||||
$ hg ci -Aqm 'a-e' | ||||
$ hg rm b.txt d.txt | ||||
$ hg ci -m 'remove b and d' | ||||
$ hg debugdata -m 1 | ||||
a.txt\x00b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 (esc) | ||||
aa.txt\x00a4bdc161c8fbb523c9a60409603f8710ff49a571 (esc) | ||||
c.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
cc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
ccc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
e.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
Matt Harbison
|
r42569 | $ hg up -qC . | ||
Matt Harbison
|
r42568 | |||
Matt Harbison
|
r42569 | $ hg verify | ||
Matt Harbison
|
r42568 | checking changesets | ||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
checked 2 changesets with 8 changes to 8 files | ||||
$ hg rollback -q --config ui.rollback=True | ||||
$ hg rm b.txt d.txt | ||||
$ echo bb > bb.txt | ||||
Matt Harbison
|
r42569 | A mix of adds and removes should remove all dropped entries. | ||
Matt Harbison
|
r42568 | |||
$ hg ci -Aqm 'remove b and d; add bb' | ||||
$ hg debugdata -m 1 | ||||
a.txt\x00b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 (esc) | ||||
aa.txt\x00a4bdc161c8fbb523c9a60409603f8710ff49a571 (esc) | ||||
bb.txt\x0004c6faf8a9fdd848a5304dfc1704749a374dff44 (esc) | ||||
c.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
cc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
ccc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
e.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) | ||||
Matt Harbison
|
r42569 | $ hg verify | ||
Matt Harbison
|
r42568 | checking changesets | ||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
checked 2 changesets with 9 changes to 9 files | ||||