##// END OF EJS Templates
tests: avoid unnecessarily looking inside .hg/ in test-narrow*...
Martin von Zweigbergk -
r38873:fa64a229 default
parent child Browse files
Show More
@@ -1,131 +1,125 b''
1 $ . "$TESTDIR/narrow-library.sh"
1 $ . "$TESTDIR/narrow-library.sh"
2
2
3 $ hg init master
3 $ hg init master
4 $ cd master
4 $ cd master
5 $ mkdir dir
5 $ mkdir dir
6 $ mkdir dir/src
6 $ mkdir dir/src
7 $ cd dir/src
7 $ cd dir/src
8 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "f$x"; hg add "f$x"; hg commit -m "Commit src $x"; done
8 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "f$x"; hg add "f$x"; hg commit -m "Commit src $x"; done
9 $ cd ..
9 $ cd ..
10 $ mkdir tests
10 $ mkdir tests
11 $ cd tests
11 $ cd tests
12 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "t$x"; hg add "t$x"; hg commit -m "Commit test $x"; done
12 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "t$x"; hg add "t$x"; hg commit -m "Commit test $x"; done
13 $ cd ../../..
13 $ cd ../../..
14
14
15 narrow clone a file, f10
15 narrow clone a file, f10
16
16
17 $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10"
17 $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10"
18 requesting all changes
18 requesting all changes
19 adding changesets
19 adding changesets
20 adding manifests
20 adding manifests
21 adding file changes
21 adding file changes
22 added 40 changesets with 1 changes to 1 files
22 added 40 changesets with 1 changes to 1 files
23 new changesets *:* (glob)
23 new changesets *:* (glob)
24 $ cd narrow
24 $ cd narrow
25 $ cat .hg/requires | grep -v generaldelta
25 $ cat .hg/requires | grep -v generaldelta
26 dotencode
26 dotencode
27 fncache
27 fncache
28 narrowhg-experimental
28 narrowhg-experimental
29 revlogv1
29 revlogv1
30 store
30 store
31 testonly-simplestore (reposimplestore !)
31 testonly-simplestore (reposimplestore !)
32
32
33 $ cat .hg/narrowspec
33 $ hg tracked
34 [includes]
34 I path:dir/src/f10
35 path:dir/src/f10
36 [excludes]
37 $ hg update
35 $ hg update
38 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
36 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
39 $ find * | sort
37 $ find * | sort
40 dir
38 dir
41 dir/src
39 dir/src
42 dir/src/f10
40 dir/src/f10
43 $ cat dir/src/f10
41 $ cat dir/src/f10
44 10
42 10
45
43
46 $ cd ..
44 $ cd ..
47
45
48 narrow clone a directory, tests/, except tests/t19
46 narrow clone a directory, tests/, except tests/t19
49
47
50 $ hg clone --narrow ssh://user@dummy/master narrowdir --noupdate --include "dir/tests/" --exclude "dir/tests/t19"
48 $ hg clone --narrow ssh://user@dummy/master narrowdir --noupdate --include "dir/tests/" --exclude "dir/tests/t19"
51 requesting all changes
49 requesting all changes
52 adding changesets
50 adding changesets
53 adding manifests
51 adding manifests
54 adding file changes
52 adding file changes
55 added 40 changesets with 19 changes to 19 files
53 added 40 changesets with 19 changes to 19 files
56 new changesets *:* (glob)
54 new changesets *:* (glob)
57 $ cd narrowdir
55 $ cd narrowdir
58 $ cat .hg/narrowspec
56 $ hg tracked
59 [includes]
57 I path:dir/tests
60 path:dir/tests
58 X path:dir/tests/t19
61 [excludes]
62 path:dir/tests/t19
63 $ hg update
59 $ hg update
64 19 files updated, 0 files merged, 0 files removed, 0 files unresolved
60 19 files updated, 0 files merged, 0 files removed, 0 files unresolved
65 $ find * | sort
61 $ find * | sort
66 dir
62 dir
67 dir/tests
63 dir/tests
68 dir/tests/t1
64 dir/tests/t1
69 dir/tests/t10
65 dir/tests/t10
70 dir/tests/t11
66 dir/tests/t11
71 dir/tests/t12
67 dir/tests/t12
72 dir/tests/t13
68 dir/tests/t13
73 dir/tests/t14
69 dir/tests/t14
74 dir/tests/t15
70 dir/tests/t15
75 dir/tests/t16
71 dir/tests/t16
76 dir/tests/t17
72 dir/tests/t17
77 dir/tests/t18
73 dir/tests/t18
78 dir/tests/t2
74 dir/tests/t2
79 dir/tests/t20
75 dir/tests/t20
80 dir/tests/t3
76 dir/tests/t3
81 dir/tests/t4
77 dir/tests/t4
82 dir/tests/t5
78 dir/tests/t5
83 dir/tests/t6
79 dir/tests/t6
84 dir/tests/t7
80 dir/tests/t7
85 dir/tests/t8
81 dir/tests/t8
86 dir/tests/t9
82 dir/tests/t9
87
83
88 $ cd ..
84 $ cd ..
89
85
90 narrow clone everything but a directory (tests/)
86 narrow clone everything but a directory (tests/)
91
87
92 $ hg clone --narrow ssh://user@dummy/master narrowroot --noupdate --exclude "dir/tests"
88 $ hg clone --narrow ssh://user@dummy/master narrowroot --noupdate --exclude "dir/tests"
93 requesting all changes
89 requesting all changes
94 adding changesets
90 adding changesets
95 adding manifests
91 adding manifests
96 adding file changes
92 adding file changes
97 added 40 changesets with 20 changes to 20 files
93 added 40 changesets with 20 changes to 20 files
98 new changesets *:* (glob)
94 new changesets *:* (glob)
99 $ cd narrowroot
95 $ cd narrowroot
100 $ cat .hg/narrowspec
96 $ hg tracked
101 [includes]
97 I path:.
102 path:.
98 X path:dir/tests
103 [excludes]
104 path:dir/tests
105 $ hg update
99 $ hg update
106 20 files updated, 0 files merged, 0 files removed, 0 files unresolved
100 20 files updated, 0 files merged, 0 files removed, 0 files unresolved
107 $ find * | sort
101 $ find * | sort
108 dir
102 dir
109 dir/src
103 dir/src
110 dir/src/f1
104 dir/src/f1
111 dir/src/f10
105 dir/src/f10
112 dir/src/f11
106 dir/src/f11
113 dir/src/f12
107 dir/src/f12
114 dir/src/f13
108 dir/src/f13
115 dir/src/f14
109 dir/src/f14
116 dir/src/f15
110 dir/src/f15
117 dir/src/f16
111 dir/src/f16
118 dir/src/f17
112 dir/src/f17
119 dir/src/f18
113 dir/src/f18
120 dir/src/f19
114 dir/src/f19
121 dir/src/f2
115 dir/src/f2
122 dir/src/f20
116 dir/src/f20
123 dir/src/f3
117 dir/src/f3
124 dir/src/f4
118 dir/src/f4
125 dir/src/f5
119 dir/src/f5
126 dir/src/f6
120 dir/src/f6
127 dir/src/f7
121 dir/src/f7
128 dir/src/f8
122 dir/src/f8
129 dir/src/f9
123 dir/src/f9
130
124
131 $ cd ..
125 $ cd ..
@@ -1,226 +1,220 b''
1 $ . "$TESTDIR/narrow-library.sh"
1 $ . "$TESTDIR/narrow-library.sh"
2
2
3 $ hg init master
3 $ hg init master
4 $ cd master
4 $ cd master
5 $ cat >> .hg/hgrc <<EOF
5 $ cat >> .hg/hgrc <<EOF
6 > [narrow]
6 > [narrow]
7 > serveellipses=True
7 > serveellipses=True
8 > EOF
8 > EOF
9 $ mkdir dir
9 $ mkdir dir
10 $ mkdir dir/src
10 $ mkdir dir/src
11 $ cd dir/src
11 $ cd dir/src
12 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "f$x"; hg add "f$x"; hg commit -m "Commit src $x"; done
12 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "f$x"; hg add "f$x"; hg commit -m "Commit src $x"; done
13 $ cd ..
13 $ cd ..
14 $ mkdir tests
14 $ mkdir tests
15 $ cd tests
15 $ cd tests
16 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "t$x"; hg add "t$x"; hg commit -m "Commit test $x"; done
16 $ for x in `$TESTDIR/seq.py 20`; do echo $x > "t$x"; hg add "t$x"; hg commit -m "Commit test $x"; done
17 $ cd ../../..
17 $ cd ../../..
18
18
19 narrow clone a file, f10
19 narrow clone a file, f10
20
20
21 $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10"
21 $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10"
22 requesting all changes
22 requesting all changes
23 adding changesets
23 adding changesets
24 adding manifests
24 adding manifests
25 adding file changes
25 adding file changes
26 added 3 changesets with 1 changes to 1 files
26 added 3 changesets with 1 changes to 1 files
27 new changesets *:* (glob)
27 new changesets *:* (glob)
28 $ cd narrow
28 $ cd narrow
29 $ cat .hg/requires | grep -v generaldelta
29 $ cat .hg/requires | grep -v generaldelta
30 dotencode
30 dotencode
31 fncache
31 fncache
32 narrowhg-experimental
32 narrowhg-experimental
33 revlogv1
33 revlogv1
34 store
34 store
35 testonly-simplestore (reposimplestore !)
35 testonly-simplestore (reposimplestore !)
36
36
37 $ cat .hg/narrowspec
37 $ hg tracked
38 [includes]
38 I path:dir/src/f10
39 path:dir/src/f10
40 [excludes]
41 $ hg tracked
39 $ hg tracked
42 I path:dir/src/f10
40 I path:dir/src/f10
43 $ hg update
41 $ hg update
44 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
42 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 $ find * | sort
43 $ find * | sort
46 dir
44 dir
47 dir/src
45 dir/src
48 dir/src/f10
46 dir/src/f10
49 $ cat dir/src/f10
47 $ cat dir/src/f10
50 10
48 10
51
49
52 $ cd ..
50 $ cd ..
53
51
54 narrow clone with a newline should fail
52 narrow clone with a newline should fail
55
53
56 $ hg clone --narrow ssh://user@dummy/master narrow_fail --noupdate --include 'dir/src/f10
54 $ hg clone --narrow ssh://user@dummy/master narrow_fail --noupdate --include 'dir/src/f10
57 > '
55 > '
58 requesting all changes
56 requesting all changes
59 abort: newlines are not allowed in narrowspec paths
57 abort: newlines are not allowed in narrowspec paths
60 [255]
58 [255]
61
59
62 narrow clone a directory, tests/, except tests/t19
60 narrow clone a directory, tests/, except tests/t19
63
61
64 $ hg clone --narrow ssh://user@dummy/master narrowdir --noupdate --include "dir/tests/" --exclude "dir/tests/t19"
62 $ hg clone --narrow ssh://user@dummy/master narrowdir --noupdate --include "dir/tests/" --exclude "dir/tests/t19"
65 requesting all changes
63 requesting all changes
66 adding changesets
64 adding changesets
67 adding manifests
65 adding manifests
68 adding file changes
66 adding file changes
69 added 21 changesets with 19 changes to 19 files
67 added 21 changesets with 19 changes to 19 files
70 new changesets *:* (glob)
68 new changesets *:* (glob)
71 $ cd narrowdir
69 $ cd narrowdir
72 $ cat .hg/narrowspec
70 $ hg tracked
73 [includes]
71 I path:dir/tests
74 path:dir/tests
72 X path:dir/tests/t19
75 [excludes]
76 path:dir/tests/t19
77 $ hg tracked
73 $ hg tracked
78 I path:dir/tests
74 I path:dir/tests
79 X path:dir/tests/t19
75 X path:dir/tests/t19
80 $ hg update
76 $ hg update
81 19 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 19 files updated, 0 files merged, 0 files removed, 0 files unresolved
82 $ find * | sort
78 $ find * | sort
83 dir
79 dir
84 dir/tests
80 dir/tests
85 dir/tests/t1
81 dir/tests/t1
86 dir/tests/t10
82 dir/tests/t10
87 dir/tests/t11
83 dir/tests/t11
88 dir/tests/t12
84 dir/tests/t12
89 dir/tests/t13
85 dir/tests/t13
90 dir/tests/t14
86 dir/tests/t14
91 dir/tests/t15
87 dir/tests/t15
92 dir/tests/t16
88 dir/tests/t16
93 dir/tests/t17
89 dir/tests/t17
94 dir/tests/t18
90 dir/tests/t18
95 dir/tests/t2
91 dir/tests/t2
96 dir/tests/t20
92 dir/tests/t20
97 dir/tests/t3
93 dir/tests/t3
98 dir/tests/t4
94 dir/tests/t4
99 dir/tests/t5
95 dir/tests/t5
100 dir/tests/t6
96 dir/tests/t6
101 dir/tests/t7
97 dir/tests/t7
102 dir/tests/t8
98 dir/tests/t8
103 dir/tests/t9
99 dir/tests/t9
104
100
105 $ cd ..
101 $ cd ..
106
102
107 narrow clone everything but a directory (tests/)
103 narrow clone everything but a directory (tests/)
108
104
109 $ hg clone --narrow ssh://user@dummy/master narrowroot --noupdate --exclude "dir/tests"
105 $ hg clone --narrow ssh://user@dummy/master narrowroot --noupdate --exclude "dir/tests"
110 requesting all changes
106 requesting all changes
111 adding changesets
107 adding changesets
112 adding manifests
108 adding manifests
113 adding file changes
109 adding file changes
114 added 21 changesets with 20 changes to 20 files
110 added 21 changesets with 20 changes to 20 files
115 new changesets *:* (glob)
111 new changesets *:* (glob)
116 $ cd narrowroot
112 $ cd narrowroot
117 $ cat .hg/narrowspec
113 $ hg tracked
118 [includes]
114 I path:.
119 path:.
115 X path:dir/tests
120 [excludes]
121 path:dir/tests
122 $ hg tracked
116 $ hg tracked
123 I path:.
117 I path:.
124 X path:dir/tests
118 X path:dir/tests
125 $ hg update
119 $ hg update
126 20 files updated, 0 files merged, 0 files removed, 0 files unresolved
120 20 files updated, 0 files merged, 0 files removed, 0 files unresolved
127 $ find * | sort
121 $ find * | sort
128 dir
122 dir
129 dir/src
123 dir/src
130 dir/src/f1
124 dir/src/f1
131 dir/src/f10
125 dir/src/f10
132 dir/src/f11
126 dir/src/f11
133 dir/src/f12
127 dir/src/f12
134 dir/src/f13
128 dir/src/f13
135 dir/src/f14
129 dir/src/f14
136 dir/src/f15
130 dir/src/f15
137 dir/src/f16
131 dir/src/f16
138 dir/src/f17
132 dir/src/f17
139 dir/src/f18
133 dir/src/f18
140 dir/src/f19
134 dir/src/f19
141 dir/src/f2
135 dir/src/f2
142 dir/src/f20
136 dir/src/f20
143 dir/src/f3
137 dir/src/f3
144 dir/src/f4
138 dir/src/f4
145 dir/src/f5
139 dir/src/f5
146 dir/src/f6
140 dir/src/f6
147 dir/src/f7
141 dir/src/f7
148 dir/src/f8
142 dir/src/f8
149 dir/src/f9
143 dir/src/f9
150
144
151 $ cd ..
145 $ cd ..
152
146
153 narrow clone no paths at all
147 narrow clone no paths at all
154
148
155 $ hg clone --narrow ssh://user@dummy/master narrowempty --noupdate
149 $ hg clone --narrow ssh://user@dummy/master narrowempty --noupdate
156 requesting all changes
150 requesting all changes
157 adding changesets
151 adding changesets
158 adding manifests
152 adding manifests
159 adding file changes
153 adding file changes
160 added 1 changesets with 0 changes to 0 files
154 added 1 changesets with 0 changes to 0 files
161 new changesets * (glob)
155 new changesets * (glob)
162 $ cd narrowempty
156 $ cd narrowempty
163 $ hg tracked
157 $ hg tracked
164 $ hg update
158 $ hg update
165 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
159 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
166 $ ls
160 $ ls
167
161
168 $ cd ..
162 $ cd ..
169
163
170 simple clone
164 simple clone
171 $ hg clone ssh://user@dummy/master simpleclone
165 $ hg clone ssh://user@dummy/master simpleclone
172 requesting all changes
166 requesting all changes
173 adding changesets
167 adding changesets
174 adding manifests
168 adding manifests
175 adding file changes
169 adding file changes
176 added 40 changesets with 40 changes to 40 files
170 added 40 changesets with 40 changes to 40 files
177 new changesets * (glob)
171 new changesets * (glob)
178 updating to branch default
172 updating to branch default
179 40 files updated, 0 files merged, 0 files removed, 0 files unresolved
173 40 files updated, 0 files merged, 0 files removed, 0 files unresolved
180 $ cd simpleclone
174 $ cd simpleclone
181 $ find * | sort
175 $ find * | sort
182 dir
176 dir
183 dir/src
177 dir/src
184 dir/src/f1
178 dir/src/f1
185 dir/src/f10
179 dir/src/f10
186 dir/src/f11
180 dir/src/f11
187 dir/src/f12
181 dir/src/f12
188 dir/src/f13
182 dir/src/f13
189 dir/src/f14
183 dir/src/f14
190 dir/src/f15
184 dir/src/f15
191 dir/src/f16
185 dir/src/f16
192 dir/src/f17
186 dir/src/f17
193 dir/src/f18
187 dir/src/f18
194 dir/src/f19
188 dir/src/f19
195 dir/src/f2
189 dir/src/f2
196 dir/src/f20
190 dir/src/f20
197 dir/src/f3
191 dir/src/f3
198 dir/src/f4
192 dir/src/f4
199 dir/src/f5
193 dir/src/f5
200 dir/src/f6
194 dir/src/f6
201 dir/src/f7
195 dir/src/f7
202 dir/src/f8
196 dir/src/f8
203 dir/src/f9
197 dir/src/f9
204 dir/tests
198 dir/tests
205 dir/tests/t1
199 dir/tests/t1
206 dir/tests/t10
200 dir/tests/t10
207 dir/tests/t11
201 dir/tests/t11
208 dir/tests/t12
202 dir/tests/t12
209 dir/tests/t13
203 dir/tests/t13
210 dir/tests/t14
204 dir/tests/t14
211 dir/tests/t15
205 dir/tests/t15
212 dir/tests/t16
206 dir/tests/t16
213 dir/tests/t17
207 dir/tests/t17
214 dir/tests/t18
208 dir/tests/t18
215 dir/tests/t19
209 dir/tests/t19
216 dir/tests/t2
210 dir/tests/t2
217 dir/tests/t20
211 dir/tests/t20
218 dir/tests/t3
212 dir/tests/t3
219 dir/tests/t4
213 dir/tests/t4
220 dir/tests/t5
214 dir/tests/t5
221 dir/tests/t6
215 dir/tests/t6
222 dir/tests/t7
216 dir/tests/t7
223 dir/tests/t8
217 dir/tests/t8
224 dir/tests/t9
218 dir/tests/t9
225
219
226 $ cd ..
220 $ cd ..
@@ -1,164 +1,164 b''
1 $ . "$TESTDIR/narrow-library.sh"
1 $ . "$TESTDIR/narrow-library.sh"
2
2
3 $ hg init master
3 $ hg init master
4 $ cd master
4 $ cd master
5
5
6 $ mkdir inside
6 $ mkdir inside
7 $ echo inside > inside/f1
7 $ echo inside > inside/f1
8 $ mkdir outside
8 $ mkdir outside
9 $ echo outside > outside/f2
9 $ echo outside > outside/f2
10 $ mkdir patchdir
10 $ mkdir patchdir
11 $ echo patch_this > patchdir/f3
11 $ echo patch_this > patchdir/f3
12 $ hg ci -Aqm 'initial'
12 $ hg ci -Aqm 'initial'
13
13
14 $ cd ..
14 $ cd ..
15
15
16 $ hg clone --narrow ssh://user@dummy/master narrow --include inside
16 $ hg clone --narrow ssh://user@dummy/master narrow --include inside
17 requesting all changes
17 requesting all changes
18 adding changesets
18 adding changesets
19 adding manifests
19 adding manifests
20 adding file changes
20 adding file changes
21 added 1 changesets with 1 changes to 1 files
21 added 1 changesets with 1 changes to 1 files
22 new changesets dff6a2a6d433
22 new changesets dff6a2a6d433
23 updating to branch default
23 updating to branch default
24 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
24 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
25
25
26 $ cd narrow
26 $ cd narrow
27
27
28 $ mkdir outside
28 $ mkdir outside
29 $ echo other_contents > outside/f2
29 $ echo other_contents > outside/f2
30 $ grep outside .hg/narrowspec
30 $ hg tracked | grep outside
31 [1]
31 [1]
32 $ grep outside .hg/dirstate
32 $ hg files | grep outside
33 [1]
33 [1]
34 $ hg status
34 $ hg status
35
35
36 `hg status` did not add outside.
36 `hg status` did not add outside.
37 $ grep outside .hg/narrowspec
37 $ hg tracked | grep outside
38 [1]
38 [1]
39 $ grep outside .hg/dirstate
39 $ hg files | grep outside
40 [1]
40 [1]
41
41
42 Unfortunately this is not really a candidate for adding to narrowhg proper,
42 Unfortunately this is not really a candidate for adding to narrowhg proper,
43 since it depends on some other source for providing the manifests (when using
43 since it depends on some other source for providing the manifests (when using
44 treemanifests) and file contents. Something like a virtual filesystem and/or
44 treemanifests) and file contents. Something like a virtual filesystem and/or
45 remotefilelog. We want to be useful when not using those systems, so we do not
45 remotefilelog. We want to be useful when not using those systems, so we do not
46 have this method available in narrowhg proper at the moment.
46 have this method available in narrowhg proper at the moment.
47 $ cat > "$TESTTMP/expand_extension.py" <<EOF
47 $ cat > "$TESTTMP/expand_extension.py" <<EOF
48 > import os
48 > import os
49 > import sys
49 > import sys
50 >
50 >
51 > from mercurial import encoding
51 > from mercurial import encoding
52 > from mercurial import extensions
52 > from mercurial import extensions
53 > from mercurial import localrepo
53 > from mercurial import localrepo
54 > from mercurial import match as matchmod
54 > from mercurial import match as matchmod
55 > from mercurial import narrowspec
55 > from mercurial import narrowspec
56 > from mercurial import patch
56 > from mercurial import patch
57 > from mercurial import util as hgutil
57 > from mercurial import util as hgutil
58 >
58 >
59 > def expandnarrowspec(ui, repo, newincludes=None):
59 > def expandnarrowspec(ui, repo, newincludes=None):
60 > if not newincludes:
60 > if not newincludes:
61 > return
61 > return
62 > import sys
62 > import sys
63 > newincludes = set([newincludes])
63 > newincludes = set([newincludes])
64 > includes, excludes = repo.narrowpats
64 > includes, excludes = repo.narrowpats
65 > currentmatcher = narrowspec.match(repo.root, includes, excludes)
65 > currentmatcher = narrowspec.match(repo.root, includes, excludes)
66 > includes = includes | newincludes
66 > includes = includes | newincludes
67 > if not repo.currenttransaction():
67 > if not repo.currenttransaction():
68 > ui.develwarn(b'expandnarrowspec called outside of transaction!')
68 > ui.develwarn(b'expandnarrowspec called outside of transaction!')
69 > repo.setnarrowpats(includes, excludes)
69 > repo.setnarrowpats(includes, excludes)
70 > newmatcher = narrowspec.match(repo.root, includes, excludes)
70 > newmatcher = narrowspec.match(repo.root, includes, excludes)
71 > added = matchmod.differencematcher(newmatcher, currentmatcher)
71 > added = matchmod.differencematcher(newmatcher, currentmatcher)
72 > for f in repo[b'.'].manifest().walk(added):
72 > for f in repo[b'.'].manifest().walk(added):
73 > repo.dirstate.normallookup(f)
73 > repo.dirstate.normallookup(f)
74 >
74 >
75 > def wrapds(ui, repo, ds):
75 > def wrapds(ui, repo, ds):
76 > class expandingdirstate(ds.__class__):
76 > class expandingdirstate(ds.__class__):
77 > @hgutil.propertycache
77 > @hgutil.propertycache
78 > def _map(self):
78 > def _map(self):
79 > ret = super(expandingdirstate, self)._map
79 > ret = super(expandingdirstate, self)._map
80 > with repo.wlock(), repo.lock(), repo.transaction(
80 > with repo.wlock(), repo.lock(), repo.transaction(
81 > b'expandnarrowspec'):
81 > b'expandnarrowspec'):
82 > expandnarrowspec(ui, repo,
82 > expandnarrowspec(ui, repo,
83 > encoding.environ.get(b'DIRSTATEINCLUDES'))
83 > encoding.environ.get(b'DIRSTATEINCLUDES'))
84 > return ret
84 > return ret
85 > ds.__class__ = expandingdirstate
85 > ds.__class__ = expandingdirstate
86 > return ds
86 > return ds
87 >
87 >
88 > def reposetup(ui, repo):
88 > def reposetup(ui, repo):
89 > class expandingrepo(repo.__class__):
89 > class expandingrepo(repo.__class__):
90 > def _makedirstate(self):
90 > def _makedirstate(self):
91 > dirstate = super(expandingrepo, self)._makedirstate()
91 > dirstate = super(expandingrepo, self)._makedirstate()
92 > return wrapds(ui, repo, dirstate)
92 > return wrapds(ui, repo, dirstate)
93 > repo.__class__ = expandingrepo
93 > repo.__class__ = expandingrepo
94 >
94 >
95 > def extsetup(unused_ui):
95 > def extsetup(unused_ui):
96 > def overridepatch(orig, ui, repo, *args, **kwargs):
96 > def overridepatch(orig, ui, repo, *args, **kwargs):
97 > with repo.wlock():
97 > with repo.wlock():
98 > expandnarrowspec(ui, repo, encoding.environ.get(b'PATCHINCLUDES'))
98 > expandnarrowspec(ui, repo, encoding.environ.get(b'PATCHINCLUDES'))
99 > return orig(ui, repo, *args, **kwargs)
99 > return orig(ui, repo, *args, **kwargs)
100 >
100 >
101 > extensions.wrapfunction(patch, b'patch', overridepatch)
101 > extensions.wrapfunction(patch, b'patch', overridepatch)
102 > EOF
102 > EOF
103 $ cat >> ".hg/hgrc" <<EOF
103 $ cat >> ".hg/hgrc" <<EOF
104 > [extensions]
104 > [extensions]
105 > expand_extension = $TESTTMP/expand_extension.py
105 > expand_extension = $TESTTMP/expand_extension.py
106 > EOF
106 > EOF
107
107
108 Since we do not have the ability to rely on a virtual filesystem or
108 Since we do not have the ability to rely on a virtual filesystem or
109 remotefilelog in the test, we just fake it by copying the data from the 'master'
109 remotefilelog in the test, we just fake it by copying the data from the 'master'
110 repo.
110 repo.
111 $ cp -a ../master/.hg/store/data/* .hg/store/data
111 $ cp -a ../master/.hg/store/data/* .hg/store/data
112 Do that for patchdir as well.
112 Do that for patchdir as well.
113 $ cp -a ../master/patchdir .
113 $ cp -a ../master/patchdir .
114
114
115 `hg status` will now add outside, but not patchdir.
115 `hg status` will now add outside, but not patchdir.
116 $ DIRSTATEINCLUDES=path:outside hg status
116 $ DIRSTATEINCLUDES=path:outside hg status
117 M outside/f2
117 M outside/f2
118 $ grep outside .hg/narrowspec
118 $ hg tracked | grep outside
119 path:outside
119 I path:outside
120 $ grep outside .hg/dirstate > /dev/null
120 $ hg files | grep outside > /dev/null
121 $ grep patchdir .hg/narrowspec
121 $ hg tracked | grep patchdir
122 [1]
122 [1]
123 $ grep patchdir .hg/dirstate
123 $ hg files | grep patchdir
124 [1]
124 [1]
125
125
126 Get rid of the modification to outside/f2.
126 Get rid of the modification to outside/f2.
127 $ hg update -C .
127 $ hg update -C .
128 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
128 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
129
129
130 This patch will not apply cleanly at the moment, so `hg import` will break
130 This patch will not apply cleanly at the moment, so `hg import` will break
131 $ cat > "$TESTTMP/foo.patch" <<EOF
131 $ cat > "$TESTTMP/foo.patch" <<EOF
132 > --- patchdir/f3
132 > --- patchdir/f3
133 > +++ patchdir/f3
133 > +++ patchdir/f3
134 > @@ -1,1 +1,1 @@
134 > @@ -1,1 +1,1 @@
135 > -this should be "patch_this", but its not, so patch fails
135 > -this should be "patch_this", but its not, so patch fails
136 > +this text is irrelevant
136 > +this text is irrelevant
137 > EOF
137 > EOF
138 $ PATCHINCLUDES=path:patchdir hg import -p0 -e "$TESTTMP/foo.patch" -m ignored
138 $ PATCHINCLUDES=path:patchdir hg import -p0 -e "$TESTTMP/foo.patch" -m ignored
139 applying $TESTTMP/foo.patch
139 applying $TESTTMP/foo.patch
140 patching file patchdir/f3
140 patching file patchdir/f3
141 Hunk #1 FAILED at 0
141 Hunk #1 FAILED at 0
142 1 out of 1 hunks FAILED -- saving rejects to file patchdir/f3.rej
142 1 out of 1 hunks FAILED -- saving rejects to file patchdir/f3.rej
143 abort: patch failed to apply
143 abort: patch failed to apply
144 [255]
144 [255]
145 $ grep patchdir .hg/narrowspec
145 $ hg tracked | grep patchdir
146 [1]
146 [1]
147 $ grep patchdir .hg/dirstate > /dev/null
147 $ hg files | grep patchdir > /dev/null
148 [1]
148 [1]
149
149
150 Let's make it apply cleanly and see that it *did* expand properly
150 Let's make it apply cleanly and see that it *did* expand properly
151 $ cat > "$TESTTMP/foo.patch" <<EOF
151 $ cat > "$TESTTMP/foo.patch" <<EOF
152 > --- patchdir/f3
152 > --- patchdir/f3
153 > +++ patchdir/f3
153 > +++ patchdir/f3
154 > @@ -1,1 +1,1 @@
154 > @@ -1,1 +1,1 @@
155 > -patch_this
155 > -patch_this
156 > +patched_this
156 > +patched_this
157 > EOF
157 > EOF
158 $ PATCHINCLUDES=path:patchdir hg import -p0 -e "$TESTTMP/foo.patch" -m message
158 $ PATCHINCLUDES=path:patchdir hg import -p0 -e "$TESTTMP/foo.patch" -m message
159 applying $TESTTMP/foo.patch
159 applying $TESTTMP/foo.patch
160 $ cat patchdir/f3
160 $ cat patchdir/f3
161 patched_this
161 patched_this
162 $ grep patchdir .hg/narrowspec
162 $ hg tracked | grep patchdir
163 path:patchdir
163 I path:patchdir
164 $ grep patchdir .hg/dirstate > /dev/null
164 $ hg files | grep patchdir > /dev/null
@@ -1,439 +1,429 b''
1 $ . "$TESTDIR/narrow-library.sh"
1 $ . "$TESTDIR/narrow-library.sh"
2
2
3 initialize nested directories to validate complex include/exclude patterns
3 initialize nested directories to validate complex include/exclude patterns
4
4
5 $ hg init master
5 $ hg init master
6 $ cd master
6 $ cd master
7 $ cat >> .hg/hgrc <<EOF
7 $ cat >> .hg/hgrc <<EOF
8 > [narrow]
8 > [narrow]
9 > serveellipses=True
9 > serveellipses=True
10 > EOF
10 > EOF
11
11
12 $ echo root > root
12 $ echo root > root
13 $ hg add root
13 $ hg add root
14 $ hg commit -m 'add root'
14 $ hg commit -m 'add root'
15
15
16 $ for d in dir1 dir2 dir1/dirA dir1/dirB dir2/dirA dir2/dirB
16 $ for d in dir1 dir2 dir1/dirA dir1/dirB dir2/dirA dir2/dirB
17 > do
17 > do
18 > mkdir -p $d
18 > mkdir -p $d
19 > echo $d/foo > $d/foo
19 > echo $d/foo > $d/foo
20 > hg add $d/foo
20 > hg add $d/foo
21 > hg commit -m "add $d/foo"
21 > hg commit -m "add $d/foo"
22 > echo $d/bar > $d/bar
22 > echo $d/bar > $d/bar
23 > hg add $d/bar
23 > hg add $d/bar
24 > hg commit -m "add $d/bar"
24 > hg commit -m "add $d/bar"
25 > done
25 > done
26 #if execbit
26 #if execbit
27 $ chmod +x dir1/dirA/foo
27 $ chmod +x dir1/dirA/foo
28 $ hg commit -m "make dir1/dirA/foo executable"
28 $ hg commit -m "make dir1/dirA/foo executable"
29 #else
29 #else
30 $ hg import --bypass - <<EOF
30 $ hg import --bypass - <<EOF
31 > # HG changeset patch
31 > # HG changeset patch
32 > make dir1/dirA/foo executable
32 > make dir1/dirA/foo executable
33 >
33 >
34 > diff --git a/dir1/dirA/foo b/dir1/dirA/foo
34 > diff --git a/dir1/dirA/foo b/dir1/dirA/foo
35 > old mode 100644
35 > old mode 100644
36 > new mode 100755
36 > new mode 100755
37 > EOF
37 > EOF
38 applying patch from stdin
38 applying patch from stdin
39 $ hg update -qr tip
39 $ hg update -qr tip
40 #endif
40 #endif
41 $ hg log -G -T '{rev} {node|short} {files}\n'
41 $ hg log -G -T '{rev} {node|short} {files}\n'
42 @ 13 c87ca422d521 dir1/dirA/foo
42 @ 13 c87ca422d521 dir1/dirA/foo
43 |
43 |
44 o 12 951b8a83924e dir2/dirB/bar
44 o 12 951b8a83924e dir2/dirB/bar
45 |
45 |
46 o 11 01ae5a51b563 dir2/dirB/foo
46 o 11 01ae5a51b563 dir2/dirB/foo
47 |
47 |
48 o 10 5eababdf0ac5 dir2/dirA/bar
48 o 10 5eababdf0ac5 dir2/dirA/bar
49 |
49 |
50 o 9 99d690663739 dir2/dirA/foo
50 o 9 99d690663739 dir2/dirA/foo
51 |
51 |
52 o 8 8e80155d5445 dir1/dirB/bar
52 o 8 8e80155d5445 dir1/dirB/bar
53 |
53 |
54 o 7 406760310428 dir1/dirB/foo
54 o 7 406760310428 dir1/dirB/foo
55 |
55 |
56 o 6 623466a5f475 dir1/dirA/bar
56 o 6 623466a5f475 dir1/dirA/bar
57 |
57 |
58 o 5 06ff3a5be997 dir1/dirA/foo
58 o 5 06ff3a5be997 dir1/dirA/foo
59 |
59 |
60 o 4 33227af02764 dir2/bar
60 o 4 33227af02764 dir2/bar
61 |
61 |
62 o 3 5e1f9d8d7c69 dir2/foo
62 o 3 5e1f9d8d7c69 dir2/foo
63 |
63 |
64 o 2 594bc4b13d4a dir1/bar
64 o 2 594bc4b13d4a dir1/bar
65 |
65 |
66 o 1 47f480a08324 dir1/foo
66 o 1 47f480a08324 dir1/foo
67 |
67 |
68 o 0 2a4f0c3b67da root
68 o 0 2a4f0c3b67da root
69
69
70 $ cd ..
70 $ cd ..
71
71
72 clone a narrow portion of the master, such that we can widen it later
72 clone a narrow portion of the master, such that we can widen it later
73
73
74 $ hg clone --narrow ssh://user@dummy/master narrow \
74 $ hg clone --narrow ssh://user@dummy/master narrow \
75 > --include dir1 \
75 > --include dir1 \
76 > --include dir2 \
76 > --include dir2 \
77 > --exclude dir1/dirA \
77 > --exclude dir1/dirA \
78 > --exclude dir1/dirB \
78 > --exclude dir1/dirB \
79 > --exclude dir2/dirA \
79 > --exclude dir2/dirA \
80 > --exclude dir2/dirB
80 > --exclude dir2/dirB
81 requesting all changes
81 requesting all changes
82 adding changesets
82 adding changesets
83 adding manifests
83 adding manifests
84 adding file changes
84 adding file changes
85 added 6 changesets with 4 changes to 4 files
85 added 6 changesets with 4 changes to 4 files
86 new changesets *:* (glob)
86 new changesets *:* (glob)
87 updating to branch default
87 updating to branch default
88 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
88 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
89
89
90 $ cd narrow
90 $ cd narrow
91 $ cat .hg/narrowspec
91 $ hg tracked
92 [includes]
92 I path:dir1
93 path:dir1
93 I path:dir2
94 path:dir2
94 X path:dir1/dirA
95 [excludes]
95 X path:dir1/dirB
96 path:dir1/dirA
96 X path:dir2/dirA
97 path:dir1/dirB
97 X path:dir2/dirB
98 path:dir2/dirA
99 path:dir2/dirB
100 $ hg manifest -r tip
98 $ hg manifest -r tip
101 dir1/bar
99 dir1/bar
102 dir1/dirA/bar
100 dir1/dirA/bar
103 dir1/dirA/foo
101 dir1/dirA/foo
104 dir1/dirB/bar
102 dir1/dirB/bar
105 dir1/dirB/foo
103 dir1/dirB/foo
106 dir1/foo
104 dir1/foo
107 dir2/bar
105 dir2/bar
108 dir2/dirA/bar
106 dir2/dirA/bar
109 dir2/dirA/foo
107 dir2/dirA/foo
110 dir2/dirB/bar
108 dir2/dirB/bar
111 dir2/dirB/foo
109 dir2/dirB/foo
112 dir2/foo
110 dir2/foo
113 root
111 root
114 $ find * | sort
112 $ find * | sort
115 dir1
113 dir1
116 dir1/bar
114 dir1/bar
117 dir1/foo
115 dir1/foo
118 dir2
116 dir2
119 dir2/bar
117 dir2/bar
120 dir2/foo
118 dir2/foo
121 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
119 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
122 @ 5 c87ca422d521... dir1/dirA/foo
120 @ 5 c87ca422d521... dir1/dirA/foo
123 |
121 |
124 o 4 33227af02764 dir2/bar
122 o 4 33227af02764 dir2/bar
125 |
123 |
126 o 3 5e1f9d8d7c69 dir2/foo
124 o 3 5e1f9d8d7c69 dir2/foo
127 |
125 |
128 o 2 594bc4b13d4a dir1/bar
126 o 2 594bc4b13d4a dir1/bar
129 |
127 |
130 o 1 47f480a08324 dir1/foo
128 o 1 47f480a08324 dir1/foo
131 |
129 |
132 o 0 2a4f0c3b67da... root
130 o 0 2a4f0c3b67da... root
133
131
134
132
135 widen the narrow checkout
133 widen the narrow checkout
136
134
137 $ hg tracked --removeexclude dir1/dirA
135 $ hg tracked --removeexclude dir1/dirA
138 comparing with ssh://user@dummy/master
136 comparing with ssh://user@dummy/master
139 searching for changes
137 searching for changes
140 no changes found
138 no changes found
141 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
139 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
142 adding changesets
140 adding changesets
143 adding manifests
141 adding manifests
144 adding file changes
142 adding file changes
145 added 9 changesets with 6 changes to 6 files
143 added 9 changesets with 6 changes to 6 files
146 new changesets *:* (glob)
144 new changesets *:* (glob)
147 $ cat .hg/narrowspec
145 $ hg tracked
148 [includes]
146 I path:dir1
149 path:dir1
147 I path:dir2
150 path:dir2
148 X path:dir1/dirB
151 [excludes]
149 X path:dir2/dirA
152 path:dir1/dirB
150 X path:dir2/dirB
153 path:dir2/dirA
154 path:dir2/dirB
155 $ find * | sort
151 $ find * | sort
156 dir1
152 dir1
157 dir1/bar
153 dir1/bar
158 dir1/dirA
154 dir1/dirA
159 dir1/dirA/bar
155 dir1/dirA/bar
160 dir1/dirA/foo
156 dir1/dirA/foo
161 dir1/foo
157 dir1/foo
162 dir2
158 dir2
163 dir2/bar
159 dir2/bar
164 dir2/foo
160 dir2/foo
165
161
166 #if execbit
162 #if execbit
167 $ test -x dir1/dirA/foo && echo executable
163 $ test -x dir1/dirA/foo && echo executable
168 executable
164 executable
169 $ test -x dir1/dirA/bar || echo not executable
165 $ test -x dir1/dirA/bar || echo not executable
170 not executable
166 not executable
171 #endif
167 #endif
172
168
173 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
169 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
174 @ 8 c87ca422d521 dir1/dirA/foo
170 @ 8 c87ca422d521 dir1/dirA/foo
175 |
171 |
176 o 7 951b8a83924e... dir2/dirB/bar
172 o 7 951b8a83924e... dir2/dirB/bar
177 |
173 |
178 o 6 623466a5f475 dir1/dirA/bar
174 o 6 623466a5f475 dir1/dirA/bar
179 |
175 |
180 o 5 06ff3a5be997 dir1/dirA/foo
176 o 5 06ff3a5be997 dir1/dirA/foo
181 |
177 |
182 o 4 33227af02764 dir2/bar
178 o 4 33227af02764 dir2/bar
183 |
179 |
184 o 3 5e1f9d8d7c69 dir2/foo
180 o 3 5e1f9d8d7c69 dir2/foo
185 |
181 |
186 o 2 594bc4b13d4a dir1/bar
182 o 2 594bc4b13d4a dir1/bar
187 |
183 |
188 o 1 47f480a08324 dir1/foo
184 o 1 47f480a08324 dir1/foo
189 |
185 |
190 o 0 2a4f0c3b67da... root
186 o 0 2a4f0c3b67da... root
191
187
192
188
193 widen narrow spec again, but exclude a file in previously included spec
189 widen narrow spec again, but exclude a file in previously included spec
194
190
195 $ hg tracked --removeexclude dir2/dirB --addexclude dir1/dirA/bar
191 $ hg tracked --removeexclude dir2/dirB --addexclude dir1/dirA/bar
196 comparing with ssh://user@dummy/master
192 comparing with ssh://user@dummy/master
197 searching for changes
193 searching for changes
198 looking for local changes to affected paths
194 looking for local changes to affected paths
199 deleting data/dir1/dirA/bar.i (reporevlogstore !)
195 deleting data/dir1/dirA/bar.i (reporevlogstore !)
200 deleting data/dir1/dirA/bar/0eca1d0cbdaea4651d1d04d71976a6d2d9bfaae5 (reposimplestore !)
196 deleting data/dir1/dirA/bar/0eca1d0cbdaea4651d1d04d71976a6d2d9bfaae5 (reposimplestore !)
201 deleting data/dir1/dirA/bar/index (reposimplestore !)
197 deleting data/dir1/dirA/bar/index (reposimplestore !)
202 no changes found
198 no changes found
203 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
199 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
204 adding changesets
200 adding changesets
205 adding manifests
201 adding manifests
206 adding file changes
202 adding file changes
207 added 11 changesets with 7 changes to 7 files
203 added 11 changesets with 7 changes to 7 files
208 new changesets *:* (glob)
204 new changesets *:* (glob)
209 $ cat .hg/narrowspec
205 $ hg tracked
210 [includes]
206 I path:dir1
211 path:dir1
207 I path:dir2
212 path:dir2
208 X path:dir1/dirA/bar
213 [excludes]
209 X path:dir1/dirB
214 path:dir1/dirA/bar
210 X path:dir2/dirA
215 path:dir1/dirB
216 path:dir2/dirA
217 $ find * | sort
211 $ find * | sort
218 dir1
212 dir1
219 dir1/bar
213 dir1/bar
220 dir1/dirA
214 dir1/dirA
221 dir1/dirA/foo
215 dir1/dirA/foo
222 dir1/foo
216 dir1/foo
223 dir2
217 dir2
224 dir2/bar
218 dir2/bar
225 dir2/dirB
219 dir2/dirB
226 dir2/dirB/bar
220 dir2/dirB/bar
227 dir2/dirB/foo
221 dir2/dirB/foo
228 dir2/foo
222 dir2/foo
229 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
223 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
230 @ 10 c87ca422d521 dir1/dirA/foo
224 @ 10 c87ca422d521 dir1/dirA/foo
231 |
225 |
232 o 9 951b8a83924e dir2/dirB/bar
226 o 9 951b8a83924e dir2/dirB/bar
233 |
227 |
234 o 8 01ae5a51b563 dir2/dirB/foo
228 o 8 01ae5a51b563 dir2/dirB/foo
235 |
229 |
236 o 7 5eababdf0ac5... dir2/dirA/bar
230 o 7 5eababdf0ac5... dir2/dirA/bar
237 |
231 |
238 o 6 623466a5f475... dir1/dirA/bar
232 o 6 623466a5f475... dir1/dirA/bar
239 |
233 |
240 o 5 06ff3a5be997 dir1/dirA/foo
234 o 5 06ff3a5be997 dir1/dirA/foo
241 |
235 |
242 o 4 33227af02764 dir2/bar
236 o 4 33227af02764 dir2/bar
243 |
237 |
244 o 3 5e1f9d8d7c69 dir2/foo
238 o 3 5e1f9d8d7c69 dir2/foo
245 |
239 |
246 o 2 594bc4b13d4a dir1/bar
240 o 2 594bc4b13d4a dir1/bar
247 |
241 |
248 o 1 47f480a08324 dir1/foo
242 o 1 47f480a08324 dir1/foo
249 |
243 |
250 o 0 2a4f0c3b67da... root
244 o 0 2a4f0c3b67da... root
251
245
252
246
253 widen narrow spec yet again, excluding a directory in previous spec
247 widen narrow spec yet again, excluding a directory in previous spec
254
248
255 $ hg tracked --removeexclude dir2/dirA --addexclude dir1/dirA
249 $ hg tracked --removeexclude dir2/dirA --addexclude dir1/dirA
256 comparing with ssh://user@dummy/master
250 comparing with ssh://user@dummy/master
257 searching for changes
251 searching for changes
258 looking for local changes to affected paths
252 looking for local changes to affected paths
259 deleting data/dir1/dirA/foo.i (reporevlogstore !)
253 deleting data/dir1/dirA/foo.i (reporevlogstore !)
260 deleting data/dir1/dirA/foo/162caeb3d55dceb1fee793aa631ac8c73fcb8b5e (reposimplestore !)
254 deleting data/dir1/dirA/foo/162caeb3d55dceb1fee793aa631ac8c73fcb8b5e (reposimplestore !)
261 deleting data/dir1/dirA/foo/index (reposimplestore !)
255 deleting data/dir1/dirA/foo/index (reposimplestore !)
262 no changes found
256 no changes found
263 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
257 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
264 adding changesets
258 adding changesets
265 adding manifests
259 adding manifests
266 adding file changes
260 adding file changes
267 added 13 changesets with 8 changes to 8 files
261 added 13 changesets with 8 changes to 8 files
268 new changesets *:* (glob)
262 new changesets *:* (glob)
269 $ cat .hg/narrowspec
263 $ hg tracked
270 [includes]
264 I path:dir1
271 path:dir1
265 I path:dir2
272 path:dir2
266 X path:dir1/dirA
273 [excludes]
267 X path:dir1/dirA/bar
274 path:dir1/dirA
268 X path:dir1/dirB
275 path:dir1/dirA/bar
276 path:dir1/dirB
277 $ find * | sort
269 $ find * | sort
278 dir1
270 dir1
279 dir1/bar
271 dir1/bar
280 dir1/foo
272 dir1/foo
281 dir2
273 dir2
282 dir2/bar
274 dir2/bar
283 dir2/dirA
275 dir2/dirA
284 dir2/dirA/bar
276 dir2/dirA/bar
285 dir2/dirA/foo
277 dir2/dirA/foo
286 dir2/dirB
278 dir2/dirB
287 dir2/dirB/bar
279 dir2/dirB/bar
288 dir2/dirB/foo
280 dir2/dirB/foo
289 dir2/foo
281 dir2/foo
290 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
282 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
291 @ 12 c87ca422d521... dir1/dirA/foo
283 @ 12 c87ca422d521... dir1/dirA/foo
292 |
284 |
293 o 11 951b8a83924e dir2/dirB/bar
285 o 11 951b8a83924e dir2/dirB/bar
294 |
286 |
295 o 10 01ae5a51b563 dir2/dirB/foo
287 o 10 01ae5a51b563 dir2/dirB/foo
296 |
288 |
297 o 9 5eababdf0ac5 dir2/dirA/bar
289 o 9 5eababdf0ac5 dir2/dirA/bar
298 |
290 |
299 o 8 99d690663739 dir2/dirA/foo
291 o 8 99d690663739 dir2/dirA/foo
300 |
292 |
301 o 7 8e80155d5445... dir1/dirB/bar
293 o 7 8e80155d5445... dir1/dirB/bar
302 |
294 |
303 o 6 623466a5f475... dir1/dirA/bar
295 o 6 623466a5f475... dir1/dirA/bar
304 |
296 |
305 o 5 06ff3a5be997... dir1/dirA/foo
297 o 5 06ff3a5be997... dir1/dirA/foo
306 |
298 |
307 o 4 33227af02764 dir2/bar
299 o 4 33227af02764 dir2/bar
308 |
300 |
309 o 3 5e1f9d8d7c69 dir2/foo
301 o 3 5e1f9d8d7c69 dir2/foo
310 |
302 |
311 o 2 594bc4b13d4a dir1/bar
303 o 2 594bc4b13d4a dir1/bar
312 |
304 |
313 o 1 47f480a08324 dir1/foo
305 o 1 47f480a08324 dir1/foo
314 |
306 |
315 o 0 2a4f0c3b67da... root
307 o 0 2a4f0c3b67da... root
316
308
317
309
318 include a directory that was previously explicitly excluded
310 include a directory that was previously explicitly excluded
319
311
320 $ hg tracked --removeexclude dir1/dirA
312 $ hg tracked --removeexclude dir1/dirA
321 comparing with ssh://user@dummy/master
313 comparing with ssh://user@dummy/master
322 searching for changes
314 searching for changes
323 no changes found
315 no changes found
324 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
316 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
325 adding changesets
317 adding changesets
326 adding manifests
318 adding manifests
327 adding file changes
319 adding file changes
328 added 13 changesets with 9 changes to 9 files
320 added 13 changesets with 9 changes to 9 files
329 new changesets *:* (glob)
321 new changesets *:* (glob)
330 $ cat .hg/narrowspec
322 $ hg tracked
331 [includes]
323 I path:dir1
332 path:dir1
324 I path:dir2
333 path:dir2
325 X path:dir1/dirA/bar
334 [excludes]
326 X path:dir1/dirB
335 path:dir1/dirA/bar
336 path:dir1/dirB
337 $ find * | sort
327 $ find * | sort
338 dir1
328 dir1
339 dir1/bar
329 dir1/bar
340 dir1/dirA
330 dir1/dirA
341 dir1/dirA/foo
331 dir1/dirA/foo
342 dir1/foo
332 dir1/foo
343 dir2
333 dir2
344 dir2/bar
334 dir2/bar
345 dir2/dirA
335 dir2/dirA
346 dir2/dirA/bar
336 dir2/dirA/bar
347 dir2/dirA/foo
337 dir2/dirA/foo
348 dir2/dirB
338 dir2/dirB
349 dir2/dirB/bar
339 dir2/dirB/bar
350 dir2/dirB/foo
340 dir2/dirB/foo
351 dir2/foo
341 dir2/foo
352 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
342 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
353 @ 12 c87ca422d521 dir1/dirA/foo
343 @ 12 c87ca422d521 dir1/dirA/foo
354 |
344 |
355 o 11 951b8a83924e dir2/dirB/bar
345 o 11 951b8a83924e dir2/dirB/bar
356 |
346 |
357 o 10 01ae5a51b563 dir2/dirB/foo
347 o 10 01ae5a51b563 dir2/dirB/foo
358 |
348 |
359 o 9 5eababdf0ac5 dir2/dirA/bar
349 o 9 5eababdf0ac5 dir2/dirA/bar
360 |
350 |
361 o 8 99d690663739 dir2/dirA/foo
351 o 8 99d690663739 dir2/dirA/foo
362 |
352 |
363 o 7 8e80155d5445... dir1/dirB/bar
353 o 7 8e80155d5445... dir1/dirB/bar
364 |
354 |
365 o 6 623466a5f475... dir1/dirA/bar
355 o 6 623466a5f475... dir1/dirA/bar
366 |
356 |
367 o 5 06ff3a5be997 dir1/dirA/foo
357 o 5 06ff3a5be997 dir1/dirA/foo
368 |
358 |
369 o 4 33227af02764 dir2/bar
359 o 4 33227af02764 dir2/bar
370 |
360 |
371 o 3 5e1f9d8d7c69 dir2/foo
361 o 3 5e1f9d8d7c69 dir2/foo
372 |
362 |
373 o 2 594bc4b13d4a dir1/bar
363 o 2 594bc4b13d4a dir1/bar
374 |
364 |
375 o 1 47f480a08324 dir1/foo
365 o 1 47f480a08324 dir1/foo
376 |
366 |
377 o 0 2a4f0c3b67da... root
367 o 0 2a4f0c3b67da... root
378
368
379
369
380 $ cd ..
370 $ cd ..
381
371
382 clone a narrow portion of the master, such that we can widen it later
372 clone a narrow portion of the master, such that we can widen it later
383
373
384 $ hg clone --narrow ssh://user@dummy/master narrow2 --include dir1/dirA
374 $ hg clone --narrow ssh://user@dummy/master narrow2 --include dir1/dirA
385 requesting all changes
375 requesting all changes
386 adding changesets
376 adding changesets
387 adding manifests
377 adding manifests
388 adding file changes
378 adding file changes
389 added 5 changesets with 2 changes to 2 files
379 added 5 changesets with 2 changes to 2 files
390 new changesets *:* (glob)
380 new changesets *:* (glob)
391 updating to branch default
381 updating to branch default
392 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
382 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
393 $ cd narrow2
383 $ cd narrow2
394 $ find * | sort
384 $ find * | sort
395 dir1
385 dir1
396 dir1/dirA
386 dir1/dirA
397 dir1/dirA/bar
387 dir1/dirA/bar
398 dir1/dirA/foo
388 dir1/dirA/foo
399 $ hg tracked --addinclude dir1
389 $ hg tracked --addinclude dir1
400 comparing with ssh://user@dummy/master
390 comparing with ssh://user@dummy/master
401 searching for changes
391 searching for changes
402 no changes found
392 no changes found
403 saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
393 saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
404 adding changesets
394 adding changesets
405 adding manifests
395 adding manifests
406 adding file changes
396 adding file changes
407 added 10 changesets with 6 changes to 6 files
397 added 10 changesets with 6 changes to 6 files
408 new changesets *:* (glob)
398 new changesets *:* (glob)
409 $ find * | sort
399 $ find * | sort
410 dir1
400 dir1
411 dir1/bar
401 dir1/bar
412 dir1/dirA
402 dir1/dirA
413 dir1/dirA/bar
403 dir1/dirA/bar
414 dir1/dirA/foo
404 dir1/dirA/foo
415 dir1/dirB
405 dir1/dirB
416 dir1/dirB/bar
406 dir1/dirB/bar
417 dir1/dirB/foo
407 dir1/dirB/foo
418 dir1/foo
408 dir1/foo
419 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
409 $ hg log -G -T '{rev} {node|short}{if(ellipsis, "...")} {files}\n'
420 @ 9 c87ca422d521 dir1/dirA/foo
410 @ 9 c87ca422d521 dir1/dirA/foo
421 |
411 |
422 o 8 951b8a83924e... dir2/dirB/bar
412 o 8 951b8a83924e... dir2/dirB/bar
423 |
413 |
424 o 7 8e80155d5445 dir1/dirB/bar
414 o 7 8e80155d5445 dir1/dirB/bar
425 |
415 |
426 o 6 406760310428 dir1/dirB/foo
416 o 6 406760310428 dir1/dirB/foo
427 |
417 |
428 o 5 623466a5f475 dir1/dirA/bar
418 o 5 623466a5f475 dir1/dirA/bar
429 |
419 |
430 o 4 06ff3a5be997 dir1/dirA/foo
420 o 4 06ff3a5be997 dir1/dirA/foo
431 |
421 |
432 o 3 33227af02764... dir2/bar
422 o 3 33227af02764... dir2/bar
433 |
423 |
434 o 2 594bc4b13d4a dir1/bar
424 o 2 594bc4b13d4a dir1/bar
435 |
425 |
436 o 1 47f480a08324 dir1/foo
426 o 1 47f480a08324 dir1/foo
437 |
427 |
438 o 0 2a4f0c3b67da... root
428 o 0 2a4f0c3b67da... root
439
429
General Comments 0
You need to be logged in to leave comments. Login now