##// 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:

r39743:5abc47d4 default
r40529:9aeb9e2d default
Show More
test-status-rev.t
158 lines | 6.2 KiB | text/troff | Tads3Lexer
/ tests / test-status-rev.t
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037 Tests of 'hg status --rev <rev>' to make sure status between <rev> and '.' get
combined correctly with the dirstate status.
$ hg init
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 First commit
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" $TESTDIR/generate-working-copy-states.py state 2 1
Martin von Zweigbergk
test-status-rev: use common script for generating file history...
r23197 $ hg addremove --similarity 0
adding content1_content1_content1-tracked
adding content1_content1_content1-untracked
adding content1_content1_content3-tracked
adding content1_content1_content3-untracked
adding content1_content1_missing-tracked
adding content1_content1_missing-untracked
adding content1_content2_content1-tracked
adding content1_content2_content1-untracked
adding content1_content2_content2-tracked
adding content1_content2_content2-untracked
adding content1_content2_content3-tracked
adding content1_content2_content3-untracked
adding content1_content2_missing-tracked
adding content1_content2_missing-untracked
adding content1_missing_content1-tracked
adding content1_missing_content1-untracked
adding content1_missing_content3-tracked
adding content1_missing_content3-untracked
adding content1_missing_missing-tracked
adding content1_missing_missing-untracked
$ hg commit -m first
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 Second commit
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" $TESTDIR/generate-working-copy-states.py state 2 2
Martin von Zweigbergk
test-status-rev: use common script for generating file history...
r23197 $ hg addremove --similarity 0
removing content1_missing_content1-tracked
removing content1_missing_content1-untracked
removing content1_missing_content3-tracked
removing content1_missing_content3-untracked
removing content1_missing_missing-tracked
removing content1_missing_missing-untracked
adding missing_content2_content2-tracked
adding missing_content2_content2-untracked
adding missing_content2_content3-tracked
adding missing_content2_content3-untracked
adding missing_content2_missing-tracked
adding missing_content2_missing-untracked
$ hg commit -m second
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 Working copy
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" $TESTDIR/generate-working-copy-states.py state 2 wc
Martin von Zweigbergk
test-status-rev: use common script for generating file history...
r23197 $ hg addremove --similarity 0
adding content1_missing_content1-tracked
adding content1_missing_content1-untracked
adding content1_missing_content3-tracked
adding content1_missing_content3-untracked
adding content1_missing_missing-tracked
adding content1_missing_missing-untracked
adding missing_missing_content3-tracked
adding missing_missing_content3-untracked
adding missing_missing_missing-tracked
adding missing_missing_missing-untracked
$ hg forget *_*_*-untracked
$ rm *_*_missing-*
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Martin von Zweigbergk
test-status-rev: add tests for plain dirstate and inter-revision status...
r23230 Status compared to parent of the working copy, i.e. the dirstate status
$ hg status -A --rev 1 'glob:missing_content2_content3-tracked'
M missing_content2_content3-tracked
$ hg status -A --rev 1 'glob:missing_content2_content2-tracked'
C missing_content2_content2-tracked
$ hg status -A --rev 1 'glob:missing_missing_content3-tracked'
A missing_missing_content3-tracked
$ hg status -A --rev 1 'glob:missing_missing_content3-untracked'
? missing_missing_content3-untracked
$ hg status -A --rev 1 'glob:missing_content2_*-untracked'
R missing_content2_content2-untracked
R missing_content2_content3-untracked
R missing_content2_missing-untracked
$ hg status -A --rev 1 'glob:missing_*_missing-tracked'
! missing_content2_missing-tracked
! missing_missing_missing-tracked
Matt Harbison
test-status-rev: conditionalize output instead of tests
r33343
Matt Harbison
tests: handle differences between missing file error strings on Windows and Unix
r23353 $ hg status -A --rev 1 'glob:missing_missing_missing-untracked'
Matt Harbison
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages...
r35230 missing_missing_missing-untracked: $ENOENT$
Martin von Zweigbergk
test-status-rev: add tests for plain dirstate and inter-revision status...
r23230
Status between first and second commit. Should ignore dirstate status.
$ hg status -A --rev 0:1 'glob:content1_content2_*'
M content1_content2_content1-tracked
M content1_content2_content1-untracked
M content1_content2_content2-tracked
M content1_content2_content2-untracked
M content1_content2_content3-tracked
M content1_content2_content3-untracked
M content1_content2_missing-tracked
M content1_content2_missing-untracked
$ hg status -A --rev 0:1 'glob:content1_content1_*'
C content1_content1_content1-tracked
C content1_content1_content1-untracked
C content1_content1_content3-tracked
C content1_content1_content3-untracked
C content1_content1_missing-tracked
C content1_content1_missing-untracked
$ hg status -A --rev 0:1 'glob:missing_content2_*'
A missing_content2_content2-tracked
A missing_content2_content2-untracked
A missing_content2_content3-tracked
A missing_content2_content3-untracked
A missing_content2_missing-tracked
A missing_content2_missing-untracked
$ hg status -A --rev 0:1 'glob:content1_missing_*'
R content1_missing_content1-tracked
R content1_missing_content1-untracked
R content1_missing_content3-tracked
R content1_missing_content3-untracked
R content1_missing_missing-tracked
R content1_missing_missing-untracked
$ hg status -A --rev 0:1 'glob:missing_missing_*'
Status compared to one revision back, checking that the dirstate status
is correctly combined with the inter-revision status
Martin von Zweigbergk
status: add more complete tests for --rev...
r23037
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:content1_*_content[23]-tracked'
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 M content1_content1_content3-tracked
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 M content1_content2_content2-tracked
M content1_content2_content3-tracked
M content1_missing_content3-tracked
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:content1_*_content1-tracked'
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 C content1_content1_content1-tracked
C content1_content2_content1-tracked
C content1_missing_content1-tracked
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:missing_*_content?-tracked'
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 A missing_content2_content2-tracked
A missing_content2_content3-tracked
A missing_missing_content3-tracked
BROKEN: missing_content2_content[23]-untracked exist, so should be listed
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:missing_*_content?-untracked'
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 ? missing_missing_content3-untracked
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:content1_*_*-untracked'
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 R content1_content1_content1-untracked
R content1_content1_content3-untracked
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 R content1_content1_missing-untracked
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 R content1_content2_content1-untracked
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 R content1_content2_content2-untracked
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 R content1_content2_content3-untracked
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 R content1_content2_missing-untracked
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 R content1_missing_content1-untracked
R content1_missing_content3-untracked
R content1_missing_missing-untracked
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:*_*_missing-tracked'
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 ! content1_content1_missing-tracked
! content1_content2_missing-tracked
Martin von Zweigbergk
test-status-rev: use same names as from generate-working-copy-states...
r23196 ! content1_missing_missing-tracked
! missing_content2_missing-tracked
Martin von Zweigbergk
test-status-rev: use one glob for each expected status...
r23228 ! missing_missing_missing-tracked
Martin von Zweigbergk
test-status-rev: remove unnecessary initial commit...
r23229 $ hg status -A --rev 0 'glob:missing_*_missing-untracked'