Show More
@@ -7,6 +7,7 b'' | |||
|
7 | 7 | from __future__ import absolute_import |
|
8 | 8 | |
|
9 | 9 | import itertools |
|
10 | import os | |
|
10 | 11 | |
|
11 | 12 | from mercurial.i18n import _ |
|
12 | 13 | from mercurial import ( |
@@ -25,6 +26,7 b' from mercurial import (' | |||
|
25 | 26 | repair, |
|
26 | 27 | repository, |
|
27 | 28 | repoview, |
|
29 | sparse, | |
|
28 | 30 | util, |
|
29 | 31 | ) |
|
30 | 32 | |
@@ -43,6 +45,8 b' def setup():' | |||
|
43 | 45 | _("create a narrow clone of select files"))) |
|
44 | 46 | entry[1].append(('', 'depth', '', |
|
45 | 47 | _("limit the history fetched by distance from heads"))) |
|
48 | entry[1].append(('', 'narrowspec', '', | |
|
49 | _("read narrowspecs from file"))) | |
|
46 | 50 | # TODO(durin42): unify sparse/narrow --include/--exclude logic a bit |
|
47 | 51 | if 'sparse' not in extensions.enabled(): |
|
48 | 52 | entry[1].append(('', 'include', [], |
@@ -73,6 +77,27 b' def clonenarrowcmd(orig, ui, repo, *args' | |||
|
73 | 77 | opts = pycompat.byteskwargs(opts) |
|
74 | 78 | wrappedextraprepare = util.nullcontextmanager() |
|
75 | 79 | opts_narrow = opts['narrow'] |
|
80 | narrowspecfile = opts['narrowspec'] | |
|
81 | ||
|
82 | if narrowspecfile: | |
|
83 | filepath = os.path.join(pycompat.getcwd(), narrowspecfile) | |
|
84 | ui.status(_("reading narrowspec from '%s'\n") % filepath) | |
|
85 | try: | |
|
86 | fp = open(filepath, 'rb') | |
|
87 | except IOError: | |
|
88 | raise error.Abort(_("file '%s' not found") % filepath) | |
|
89 | ||
|
90 | includes, excludes, profiles = sparse.parseconfig(ui, fp.read(), | |
|
91 | 'narrow') | |
|
92 | if profiles: | |
|
93 | raise error.Abort(_("cannot specify other files using '%include' in" | |
|
94 | " narrowspec")) | |
|
95 | ||
|
96 | # narrowspec is passed so we should assume that user wants narrow clone | |
|
97 | opts_narrow = True | |
|
98 | opts['include'].extend(includes) | |
|
99 | opts['exclude'].extend(excludes) | |
|
100 | ||
|
76 | 101 | if opts_narrow: |
|
77 | 102 | def pullbundle2extraprepare_widen(orig, pullop, kwargs): |
|
78 | 103 | # Create narrow spec patterns from clone flags |
@@ -123,3 +123,39 b' narrow clone everything but a directory ' | |||
|
123 | 123 | dir/src/f9 |
|
124 | 124 | |
|
125 | 125 | $ cd .. |
|
126 | ||
|
127 | Testing the --narrowspec flag to clone | |
|
128 | ||
|
129 | $ cat >> narrowspecs <<EOF | |
|
130 | > %include foo | |
|
131 | > [include] | |
|
132 | > path:dir/tests/ | |
|
133 | > file:dir/src/f12 | |
|
134 | > EOF | |
|
135 | ||
|
136 | $ hg clone ssh://user@dummy/master specfile --narrowspec narrowspecs | |
|
137 | reading narrowspec from '$TESTTMP/narrowspecs' | |
|
138 | abort: cannot specify other files using '%include' in narrowspec | |
|
139 | [255] | |
|
140 | ||
|
141 | $ cat > narrowspecs <<EOF | |
|
142 | > [include] | |
|
143 | > path:dir/tests/ | |
|
144 | > file:dir/src/f12 | |
|
145 | > EOF | |
|
146 | ||
|
147 | $ hg clone ssh://user@dummy/master specfile --narrowspec narrowspecs | |
|
148 | reading narrowspec from '$TESTTMP/narrowspecs' | |
|
149 | requesting all changes | |
|
150 | adding changesets | |
|
151 | adding manifests | |
|
152 | adding file changes | |
|
153 | added 40 changesets with 20 changes to 20 files | |
|
154 | new changesets 681085829a73:26ce255d5b5d | |
|
155 | updating to branch default | |
|
156 | 20 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
157 | $ cd specfile | |
|
158 | $ hg tracked | |
|
159 | I path:dir/tests | |
|
160 | I path:file:dir/src/f12 | |
|
161 | $ cd .. |
@@ -218,3 +218,39 b' simple clone' | |||
|
218 | 218 | dir/tests/t9 |
|
219 | 219 | |
|
220 | 220 | $ cd .. |
|
221 | ||
|
222 | Testing the --narrowspec flag to clone | |
|
223 | ||
|
224 | $ cat >> narrowspecs <<EOF | |
|
225 | > %include foo | |
|
226 | > [include] | |
|
227 | > path:dir/tests/ | |
|
228 | > dir/src/f12 | |
|
229 | > EOF | |
|
230 | ||
|
231 | $ hg clone ssh://user@dummy/master specfile --narrowspec narrowspecs | |
|
232 | reading narrowspec from '$TESTTMP/narrowspecs' | |
|
233 | abort: cannot specify other files using '%include' in narrowspec | |
|
234 | [255] | |
|
235 | ||
|
236 | $ cat > narrowspecs <<EOF | |
|
237 | > [include] | |
|
238 | > path:dir/tests/ | |
|
239 | > file:dir/src/f12 | |
|
240 | > EOF | |
|
241 | ||
|
242 | $ hg clone ssh://user@dummy/master specfile --narrowspec narrowspecs | |
|
243 | reading narrowspec from '$TESTTMP/narrowspecs' | |
|
244 | requesting all changes | |
|
245 | adding changesets | |
|
246 | adding manifests | |
|
247 | adding file changes | |
|
248 | added 21 changesets with 20 changes to 20 files | |
|
249 | new changesets f93383bb3e99:26ce255d5b5d | |
|
250 | updating to branch default | |
|
251 | 20 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
252 | $ cd specfile | |
|
253 | $ hg tracked | |
|
254 | I path:dir/tests | |
|
255 | I path:file:dir/src/f12 | |
|
256 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now