Mercurial > hg
comparison tests/test-narrow-exchange.t @ 36079:a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Adjustments:
* renamed src to hgext/narrow
* marked extension experimental
* added correct copyright header where it was missing
* updated hgrc extension enable line in library.sh
* renamed library.sh to narrow-library.sh
* dropped all files from repo root as they're not interesting
* dropped test-pyflakes.t, test-check-code.t and test-check-py3-compat.t
* renamed remaining tests to all be test-narrow-* when they didn't already
* fixed test-narrow-expanddirstate.t to refer to narrow and not narrowhg
* fixed tests that wanted `update -C .` instead of `merge --abort`
* corrected a two-space indent in narrowspec.py
* added a missing _() in narrowcommands.py
* fixed imports to pass the import checker
* narrow only adds its --include and --exclude to clone if sparse isn't
enabled to avoid breaking test-duplicateoptions.py. This is a kludge,
and we'll need to come up with a better solution in the future.
These were more or less the minimum to import something that would
pass tests and not create a bunch of files we'll never use.
Changes I intend to make as followups:
* rework the test-narrow-*-tree.t tests to use the new testcases
functionality in run-tests.py
* remove lots of monkeypatches of core things
Differential Revision: https://phab.mercurial-scm.org/D1974
author | Augie Fackler <augie@google.com> |
---|---|
date | Mon, 29 Jan 2018 16:19:33 -0500 |
parents | |
children | 2d82a24d0c78 |
comparison
equal
deleted
inserted
replaced
36078:7f68235f23ff | 36079:a2a6e724d61a |
---|---|
1 | |
2 $ . "$TESTDIR/narrow-library.sh" | |
3 | |
4 create full repo | |
5 | |
6 $ hg init master | |
7 $ cd master | |
8 $ cat >> .hg/hgrc <<EOF | |
9 > [narrow] | |
10 > serveellipses=True | |
11 > EOF | |
12 | |
13 $ mkdir inside | |
14 $ echo 1 > inside/f | |
15 $ mkdir inside2 | |
16 $ echo 1 > inside2/f | |
17 $ mkdir outside | |
18 $ echo 1 > outside/f | |
19 $ hg ci -Aqm 'initial' | |
20 | |
21 $ echo 2 > inside/f | |
22 $ hg ci -qm 'inside 2' | |
23 | |
24 $ echo 2 > inside2/f | |
25 $ hg ci -qm 'inside2 2' | |
26 | |
27 $ echo 2 > outside/f | |
28 $ hg ci -qm 'outside 2' | |
29 | |
30 $ cd .. | |
31 | |
32 $ hg clone --narrow ssh://user@dummy/master narrow --include inside | |
33 requesting all changes | |
34 adding changesets | |
35 adding manifests | |
36 adding file changes | |
37 added 3 changesets with 2 changes to 1 files | |
38 new changesets *:* (glob) | |
39 updating to branch default | |
40 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
41 | |
42 $ hg clone --narrow ssh://user@dummy/master narrow2 --include inside --include inside2 | |
43 requesting all changes | |
44 adding changesets | |
45 adding manifests | |
46 adding file changes | |
47 added 4 changesets with 4 changes to 2 files | |
48 new changesets *:* (glob) | |
49 updating to branch default | |
50 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
51 | |
52 Can push to wider repo if change does not affect paths in wider repo that are | |
53 not also in narrower repo | |
54 | |
55 $ cd narrow | |
56 $ echo 3 > inside/f | |
57 $ hg ci -m 'inside 3' | |
58 $ hg push ssh://user@dummy/narrow2 | |
59 pushing to ssh://user@dummy/narrow2 | |
60 searching for changes | |
61 remote: adding changesets | |
62 remote: adding manifests | |
63 remote: adding file changes | |
64 remote: added 1 changesets with 1 changes to 1 files | |
65 | |
66 Can push to narrower repo if change affects only paths within remote's | |
67 narrow spec | |
68 | |
69 $ cd ../narrow2 | |
70 $ cat >> .hg/hgrc <<EOF | |
71 > [narrow] | |
72 > serveellipses=True | |
73 > EOF | |
74 $ hg co -r 'desc("inside 3")' | |
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
76 $ echo 4 > inside/f | |
77 $ hg ci -m 'inside 4' | |
78 $ hg push ssh://user@dummy/narrow | |
79 pushing to ssh://user@dummy/narrow | |
80 searching for changes | |
81 remote: adding changesets | |
82 remote: adding manifests | |
83 remote: adding file changes | |
84 remote: added 1 changesets with 1 changes to 1 files | |
85 | |
86 Can push to narrow repo if change affects only paths outside remote's | |
87 narrow spec | |
88 | |
89 $ echo 3 > inside2/f | |
90 $ hg ci -m 'inside2 3' | |
91 TODO: this should be successful | |
92 $ hg push ssh://user@dummy/narrow | |
93 pushing to ssh://user@dummy/narrow | |
94 searching for changes | |
95 remote: adding changesets | |
96 remote: adding manifests | |
97 remote: adding file changes | |
98 remote: transaction abort! | |
99 remote: rollback completed | |
100 remote: abort: data/inside2/f.i@4a1aa07735e6: unknown parent! | |
101 abort: stream ended unexpectedly (got 0 bytes, expected 4) | |
102 [255] | |
103 | |
104 Can pull from wider repo if change affects only paths outside remote's | |
105 narrow spec | |
106 $ echo 4 > inside2/f | |
107 $ hg ci -m 'inside2 4' | |
108 $ hg log -G -T '{rev} {node|short} {files}\n' | |
109 @ 7 d78a96df731d inside2/f | |
110 | | |
111 o 6 8c26f5218962 inside2/f | |
112 | | |
113 o 5 ba3480e2f9de inside/f | |
114 | | |
115 o 4 4e5edd526618 inside/f | |
116 | | |
117 o 3 81e7e07b7ab0 outside/f | |
118 | | |
119 o 2 f3993b8c0c2b inside2/f | |
120 | | |
121 o 1 8cd66ca966b4 inside/f | |
122 | | |
123 o 0 c8057d6f53ab inside/f inside2/f outside/f | |
124 | |
125 $ cd ../narrow | |
126 $ hg log -G -T '{rev} {node|short} {files}\n' | |
127 o 4 ba3480e2f9de inside/f | |
128 | | |
129 @ 3 4e5edd526618 inside/f | |
130 | | |
131 o 2 81e7e07b7ab0 outside/f | |
132 | | |
133 o 1 8cd66ca966b4 inside/f | |
134 | | |
135 o 0 c8057d6f53ab inside/f inside2/f outside/f | |
136 | |
137 $ hg pull ssh://user@dummy/narrow2 | |
138 pulling from ssh://user@dummy/narrow2 | |
139 searching for changes | |
140 remote: abort: unable to resolve parent while packing 'data/inside2/f.i' 3 for changeset 5 (?) | |
141 adding changesets | |
142 remote: abort: unexpected error: unable to resolve parent while packing 'data/inside2/f.i' 3 for changeset 5 | |
143 transaction abort! | |
144 rollback completed | |
145 abort: pull failed on remote | |
146 [255] | |
147 | |
148 Check that the resulting history is valid in the full repo | |
149 | |
150 $ cd ../narrow2 | |
151 $ hg push ssh://user@dummy/master | |
152 pushing to ssh://user@dummy/master | |
153 searching for changes | |
154 remote: adding changesets | |
155 remote: adding manifests | |
156 remote: adding file changes | |
157 remote: added 4 changesets with 4 changes to 2 files | |
158 $ cd ../master | |
159 $ hg verify | |
160 checking changesets | |
161 checking manifests | |
162 crosschecking files in changesets and manifests | |
163 checking files | |
164 3 files, 8 changesets, 10 total revisions | |
165 | |
166 Can not push to wider repo if change affects paths in wider repo that are | |
167 not also in narrower repo | |
168 $ cd ../master | |
169 $ hg co -r 'desc("inside2 4")' | |
170 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
171 $ echo 5 > inside2/f | |
172 $ hg ci -m 'inside2 5' | |
173 $ hg log -G -T '{rev} {node|short} {files}\n' | |
174 @ 8 5970befb64ba inside2/f | |
175 | | |
176 o 7 d78a96df731d inside2/f | |
177 | | |
178 o 6 8c26f5218962 inside2/f | |
179 | | |
180 o 5 ba3480e2f9de inside/f | |
181 | | |
182 o 4 4e5edd526618 inside/f | |
183 | | |
184 o 3 81e7e07b7ab0 outside/f | |
185 | | |
186 o 2 f3993b8c0c2b inside2/f | |
187 | | |
188 o 1 8cd66ca966b4 inside/f | |
189 | | |
190 o 0 c8057d6f53ab inside/f inside2/f outside/f | |
191 | |
192 $ cd ../narrow | |
193 $ hg pull | |
194 pulling from ssh://user@dummy/master | |
195 searching for changes | |
196 adding changesets | |
197 adding manifests | |
198 adding file changes | |
199 added 1 changesets with 0 changes to 0 files | |
200 new changesets * (glob) | |
201 (run 'hg update' to get a working copy) | |
202 TODO: this should tell the user that their narrow clone does not have the | |
203 necessary content to be able to push to the target | |
204 $ hg push ssh://user@dummy/narrow2 | |
205 pushing to ssh://user@dummy/narrow2 | |
206 searching for changes | |
207 remote has heads on branch 'default' that are not known locally: d78a96df731d | |
208 abort: push creates new remote head 5970befb64ba! | |
209 (pull and merge or see 'hg help push' for details about pushing new heads) | |
210 [255] |