annotate tests/test-narrow-sparse.t @ 47314:e4ccc341e65b

narrow: widen when files are excluded by sparse and not included by narrow In a repo where some directories are included by narrow and the complement are excluded by sparse, it was previously impossible to widen either because trying to widen narrow would complain that the requested files are outside the sparse checkout and trying to widen sparse would complain that the requested files are outside the narrow checkout. This changes the `hg tracked --addinclude` command to only actually update any newly accessible files in the dirstate if they are also accessible via sparse. Differential Revision: https://phab.mercurial-scm.org/D10734
author Charles Chamberlain <cchamberlain@janestreet.com>
date Tue, 18 May 2021 13:08:42 -0400
parents 40b51c28b242
children bf11ff22a9af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
1 Testing interaction of sparse and narrow when both are enabled on the client
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
2 side and we do a non-ellipsis clone
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
3
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
4 #testcases tree flat
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
5 $ . "$TESTDIR/narrow-library.sh"
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
6 $ cat << EOF >> $HGRCPATH
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
7 > [extensions]
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
8 > sparse =
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
9 > EOF
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
10
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
11 #if tree
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
12 $ cat << EOF >> $HGRCPATH
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
13 > [experimental]
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
14 > treemanifest = 1
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
15 > EOF
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
16 #endif
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
17
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
18 $ hg init master
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
19 $ cd master
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
20
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
21 $ mkdir inside
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
22 $ echo 'inside' > inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
23 $ hg add inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
24 $ hg commit -m 'add inside'
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
25
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
26 $ mkdir widest
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
27 $ echo 'widest' > widest/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
28 $ hg add widest/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
29 $ hg commit -m 'add widest'
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
30
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
31 $ mkdir outside
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
32 $ echo 'outside' > outside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
33 $ hg add outside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
34 $ hg commit -m 'add outside'
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
35
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
36 $ cd ..
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
37
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
38 narrow clone the inside file
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
39
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
40 $ hg clone --narrow ssh://user@dummy/master narrow --include inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
41 requesting all changes
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
42 adding changesets
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
43 adding manifests
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
44 adding file changes
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
45 added 3 changesets with 1 changes to 1 files
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
46 new changesets *:* (glob)
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
47 updating to branch default
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
48 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
49 $ cd narrow
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
50 $ hg tracked
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
51 I path:inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
52 $ hg files
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
53 inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
54
41148
8eaf693b1409 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41147
diff changeset
55 XXX: we should have a flag in `hg debugsparse` to list the sparse profile
8eaf693b1409 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41147
diff changeset
56 $ test -f .hg/sparse
8eaf693b1409 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41147
diff changeset
57 [1]
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
58
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
59 $ cat .hg/requires
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
60 dotencode
47290
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 46884
diff changeset
61 exp-dirstate-v2 (dirstate-v2 !)
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
62 fncache
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
63 generaldelta
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
64 narrowhg-experimental
46884
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
65 persistent-nodemap (rust !)
46874
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41150
diff changeset
66 revlog-compression-zstd (zstd !)
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
67 revlogv1
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
68 sparserevlog
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
69 store
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
70 treemanifest (tree !)
41149
76dcf7958c5f tests: show that debugrebuilddirstate is broken with narrow+sparse
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41148
diff changeset
71
76dcf7958c5f tests: show that debugrebuilddirstate is broken with narrow+sparse
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41148
diff changeset
72 $ hg debugrebuilddirstate
47314
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
73
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
74 We only make the following assertions for the flat test case since in the
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
75 treemanifest test case debugsparse fails with "path ends in directory
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
76 separator: outside/" which seems like a bug unrelated to the regression this is
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
77 testing for.
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
78
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
79 #if flat
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
80 widening with both sparse and narrow is possible
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
81
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
82 $ cat >> .hg/hgrc <<EOF
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
83 > [extensions]
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
84 > sparse =
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
85 > narrow =
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
86 > EOF
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
87
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
88 $ hg debugsparse -X outside/f -X widest/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
89 $ hg tracked -q --addinclude outside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
90 $ find . -name .hg -prune -o -type f -print | sort
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
91 ./inside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
92
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
93 $ hg debugsparse -d outside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
94 $ find . -name .hg -prune -o -type f -print | sort
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
95 ./inside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
96 ./outside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47290
diff changeset
97 #endif