##// END OF EJS Templates
store: introduce _matchtrackedpath() and use it to filter store files...
store: introduce _matchtrackedpath() and use it to filter store files This patch introduces a function to filter store files on the basis of the path which they are tracking. The function assumes that the entries can be of two types, 'meta/*' and 'data/*' which means it will just work on revlog based storage and not with another storage ways. For the 'data/*' entries, we remove the 'data/' part and '.i/.d' part from the beginning and the end then pass that to matcher. For the 'meta/*' entries, we remove the 'meta/' and '/00manifest.(i/d)' part from beginning and end then call matcher.visitdir() with it to make sure all the parent directories are also downloaded. Since the storage filtering for narrow stream clones is implemented with this patch, we remove the un-implemented error message, add some more tests and add the treemanifest case to tests too. The tests demonstrate that it works correctly. After this patch, we have now narrow stream clones working. Narrow stream clones are a very important feature for large repositories who have good internet connection because they use streamclones for cloning and if they do normal narrow clone, that takes more time then a full streamclone. Also narrow-stream clone will drastically speed up clone timings. Differential Revision: https://phab.mercurial-scm.org/D5139

File last commit:

r40317:29b0e9cd default
r40529:9aeb9e2d default
Show More
test-revlog.t
53 lines | 1.4 KiB | text/troff | Tads3Lexer
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390 $ hg init empty-repo
$ cd empty-repo
Flags on revlog version 0 are rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
Pulkit Goyal
py3: suppress the output from .write() calls in few tests...
r38091 ... fh.write(b'\x00\x01\x00\x00') and None
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ hg log
Gregory Szorc
revlog: tweak wording and logic for flags validation...
r32391 abort: unknown flags (0x01) in version 0 revlog 00changelog.i!
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390 [255]
Unknown flags on revlog version 1 are rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
Pulkit Goyal
py3: suppress the output from .write() calls in few tests...
r38091 ... fh.write(b'\x00\x04\x00\x01') and None
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ hg log
Gregory Szorc
revlog: tweak wording and logic for flags validation...
r32391 abort: unknown flags (0x04) in version 1 revlog 00changelog.i!
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390 [255]
Unknown version is rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
Pulkit Goyal
py3: suppress the output from .write() calls in few tests...
r38091 ... fh.write(b'\x00\x00\x00\x02') and None
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ hg log
Gregory Szorc
revlog: tweak wording and logic for flags validation...
r32391 abort: unknown version (2) in revlog 00changelog.i!
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390 [255]
$ cd ..
Matt Mackall
parsers: fix list sizing rounding error (SEC)...
r28656 Test for CVE-2016-3630
$ hg init
Mark Thomas
py3: fix test-revlog.t...
r40317 >>> import codecs
>>> open("a.i", "wb").write(codecs.decode(codecs.decode(
Pulkit Goyal
py3: add b'' prefixes in tests/test-revlog.t...
r36502 ... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD
Mark Thomas
py3: fix test-revlog.t...
r40317 ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""",
... "base64"), "zlib")) and None
Matt Mackall
parsers: fix list sizing rounding error (SEC)...
r28656
Gregory Szorc
debugcommands: introduce debugrevlogindex (BC)...
r39318 $ hg debugrevlogindex a.i
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 2 99e0332bd498 000000000000 000000000000
1 3 6674f57a23d8 99e0332bd498 000000000000
Gregory Szorc
tests: use inline Python for revlog test...
r39316
>>> from mercurial import revlog, vfs
>>> tvfs = vfs.vfs(b'.')
>>> tvfs.options = {b'revlogv1': True}
>>> rl = revlog.revlog(tvfs, b'a.i')
>>> rl.revision(1)
Mark Thomas
py3: fix test-revlog.t...
r40317 mpatchError(*'patch cannot be decoded'*) (glob)