Mercurial > hg
annotate tests/test-fetch.t @ 30442:41a8106789ca
util: implement zstd compression engine
Now that zstd is vendored and being built (in some configurations), we
can implement a compression engine for zstd!
The zstd engine is a little different from existing engines. Because
it may not always be present, we have to defer load the module in case
importing it fails. We facilitate this via a cached property that holds
a reference to the module or None. The "available" method is
implemented to reflect reality.
The zstd engine declares its ability to handle bundles using the
"zstd" human name and the "ZS" internal name. The latter was chosen
because internal names are 2 characters (by only convention I think)
and "ZS" seems reasonable.
The engine, like others, supports specifying the compression level.
However, there are no consumers of this API that yet pass in that
argument. I have plans to change that, so stay tuned.
Since all we need to do to support bundle generation with a new
compression engine is implement and register the compression engine,
bundle generation with zstd "just works!" Tests demonstrating this
have been added.
How does performance of zstd for bundle generation compare? On the
mozilla-unified repo, `hg bundle --all -t <engine>-v2` yields the
following on my i7-6700K on Linux:
engine CPU time bundle size vs orig size throughput
none 97.0s 4,054,405,584 100.0% 41.8 MB/s
bzip2 (l=9) 393.6s 975,343,098 24.0% 10.3 MB/s
gzip (l=6) 184.0s 1,140,533,074 28.1% 22.0 MB/s
zstd (l=1) 108.2s 1,119,434,718 27.6% 37.5 MB/s
zstd (l=2) 111.3s 1,078,328,002 26.6% 36.4 MB/s
zstd (l=3) 113.7s 1,011,823,727 25.0% 35.7 MB/s
zstd (l=4) 116.0s 1,008,965,888 24.9% 35.0 MB/s
zstd (l=5) 121.0s 977,203,148 24.1% 33.5 MB/s
zstd (l=6) 131.7s 927,360,198 22.9% 30.8 MB/s
zstd (l=7) 139.0s 912,808,505 22.5% 29.2 MB/s
zstd (l=12) 198.1s 854,527,714 21.1% 20.5 MB/s
zstd (l=18) 681.6s 789,750,690 19.5% 5.9 MB/s
On compression, zstd for bundle generation delivers:
* better compression than gzip with significantly less CPU utilization
* better than bzip2 compression ratios while still being significantly
faster than gzip
* ability to aggressively tune compression level to achieve
significantly smaller bundles
That last point is important. With clone bundles, a server can
pre-generate a bundle file, upload it to a static file server, and
redirect clients to transparently download it during clone. The server
could choose to produce a zstd bundle with the highest compression
settings possible. This would take a very long time - a magnitude
longer than a typical zstd bundle generation - but the result would
be hundreds of megabytes smaller! For the clone volume we do at
Mozilla, this could translate to petabytes of bandwidth savings
per year and faster clones (due to smaller transfer size).
I don't have detailed numbers to report on decompression. However,
zstd decompression is fast: >1 GB/s output throughput on this machine,
even through the Python bindings. And it can do that regardless of the
compression level of the input. By the time you have enough data to
worry about overhead of decompression, you have plenty of other things
to worry about performance wise.
zstd is wins all around. I can't wait to implement support for it
on the wire protocol and in revlogs.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 11 Nov 2016 01:10:07 -0800 |
parents | 9dcc9ed26d33 |
children | eb586ed5d8ce |
rev | line source |
---|---|
22046
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
21406
diff
changeset
|
1 #require serve |
15446
c5c9ca3719f9
tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents:
15244
diff
changeset
|
2 |
12426 | 3 $ echo "[extensions]" >> $HGRCPATH |
4 $ echo "fetch=" >> $HGRCPATH | |
6246
35bf9c23e17a
adjust test-fetch output to non-default HGPORT, e.g. with run-tests.py -j
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6235
diff
changeset
|
5 |
12426 | 6 test fetch with default branches only |
2822
4f7abf341cd4
fetch: fix breakage from mpm.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
7 |
12426 | 8 $ hg init a |
9 $ echo a > a/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
10 $ hg --cwd a commit -Ama |
12426 | 11 adding a |
12 $ hg clone a b | |
13 updating to branch default | |
14 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
15 $ hg clone a c | |
16 updating to branch default | |
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
18 $ echo b > a/b | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
19 $ hg --cwd a commit -Amb |
12426 | 20 adding b |
21 $ hg --cwd a parents -q | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
22 1:d2ae7f538514 |
2822
4f7abf341cd4
fetch: fix breakage from mpm.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
23 |
12426 | 24 should pull one change |
2822
4f7abf341cd4
fetch: fix breakage from mpm.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
25 |
12426 | 26 $ hg --cwd b fetch ../a |
27 pulling from ../a | |
28 searching for changes | |
29 adding changesets | |
30 adding manifests | |
31 adding file changes | |
32 added 1 changesets with 1 changes to 1 files | |
33 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
34 $ hg --cwd b parents -q | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
35 1:d2ae7f538514 |
12426 | 36 $ echo c > c/c |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
37 $ hg --cwd c commit -Amc |
12426 | 38 adding c |
39 $ hg clone c d | |
40 updating to branch default | |
41 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
42 $ hg clone c e | |
43 updating to branch default | |
44 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
2822
4f7abf341cd4
fetch: fix breakage from mpm.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
45 |
12426 | 46 We cannot use the default commit message if fetching from a local |
47 repo, because the path of the repo will be included in the commit | |
48 message, making every commit appear different. | |
49 should merge c into a | |
5798
86f5d8f608b7
fetch: hide authentication details
Bryan O'Sullivan <bos@serpentine.com>
parents:
2990
diff
changeset
|
50 |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
51 $ hg --cwd c fetch -d '0 0' -m 'automated merge' ../a |
12426 | 52 pulling from ../a |
53 searching for changes | |
54 adding changesets | |
55 adding manifests | |
56 adding file changes | |
57 added 1 changesets with 1 changes to 1 files (+1 heads) | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
58 updating to 2:d2ae7f538514 |
12426 | 59 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
60 merging with 1:d36c0562f908 |
12426 | 61 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
62 new changeset 3:a323a0c43ec4 merges remote changes with local |
12426 | 63 $ ls c |
64 a | |
65 b | |
66 c | |
28549 | 67 $ hg serve --cwd a -a localhost -p $HGPORT -d --pid-file=hg.pid |
12426 | 68 $ cat a/hg.pid >> "$DAEMON_PIDS" |
5798
86f5d8f608b7
fetch: hide authentication details
Bryan O'Sullivan <bos@serpentine.com>
parents:
2990
diff
changeset
|
69 |
12426 | 70 fetch over http, no auth |
21406
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
71 (this also tests that editor is invoked if '--edit' is specified) |
5798
86f5d8f608b7
fetch: hide authentication details
Bryan O'Sullivan <bos@serpentine.com>
parents:
2990
diff
changeset
|
72 |
21406
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
73 $ HGEDITOR=cat hg --cwd d fetch --edit http://localhost:$HGPORT/ |
12643
d08bb64888bc
tests: reintroduce ":$HGPORT" in test output
Mads Kiilerich <mads@kiilerich.com>
parents:
12535
diff
changeset
|
74 pulling from http://localhost:$HGPORT/ |
12426 | 75 searching for changes |
76 adding changesets | |
77 adding manifests | |
78 adding file changes | |
79 added 1 changesets with 1 changes to 1 files (+1 heads) | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
80 updating to 2:d2ae7f538514 |
12426 | 81 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
82 merging with 1:d36c0562f908 |
12426 | 83 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
21406
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
84 Automated merge with http://localhost:$HGPORT/ |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
85 |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
86 |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
87 HG: Enter commit message. Lines beginning with 'HG:' are removed. |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
88 HG: Leave message empty to abort commit. |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
89 HG: -- |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
90 HG: user: test |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
91 HG: branch merge |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
92 HG: branch 'default' |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
93 HG: changed c |
12535
975ec4ce961c
tests: fix test-fetch port number variability
Matt Mackall <mpm@selenic.com>
parents:
12426
diff
changeset
|
94 new changeset 3:* merges remote changes with local (glob) |
12426 | 95 $ hg --cwd d tip --template '{desc}\n' |
12643
d08bb64888bc
tests: reintroduce ":$HGPORT" in test output
Mads Kiilerich <mads@kiilerich.com>
parents:
12535
diff
changeset
|
96 Automated merge with http://localhost:$HGPORT/ |
21406
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
97 $ hg --cwd d status --rev 'tip^1' --rev tip |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
98 A c |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
99 $ hg --cwd d status --rev 'tip^2' --rev tip |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
100 A b |
6206
0b6f12495276
fetch: switch the default parent used for a merge
Bryan O'Sullivan <bos@serpentine.com>
parents:
5798
diff
changeset
|
101 |
12426 | 102 fetch over http with auth (should be hidden in desc) |
21406
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
103 (this also tests that editor is not invoked if '--edit' is not |
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
104 specified, even though commit message is not specified explicitly) |
6206
0b6f12495276
fetch: switch the default parent used for a merge
Bryan O'Sullivan <bos@serpentine.com>
parents:
5798
diff
changeset
|
105 |
21406
288a793c3167
fetch: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16913
diff
changeset
|
106 $ HGEDITOR=cat hg --cwd e fetch http://user:password@localhost:$HGPORT/ |
12643
d08bb64888bc
tests: reintroduce ":$HGPORT" in test output
Mads Kiilerich <mads@kiilerich.com>
parents:
12535
diff
changeset
|
107 pulling from http://user:***@localhost:$HGPORT/ |
12426 | 108 searching for changes |
109 adding changesets | |
110 adding manifests | |
111 adding file changes | |
112 added 1 changesets with 1 changes to 1 files (+1 heads) | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
113 updating to 2:d2ae7f538514 |
12426 | 114 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
115 merging with 1:d36c0562f908 |
12426 | 116 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
12535
975ec4ce961c
tests: fix test-fetch port number variability
Matt Mackall <mpm@selenic.com>
parents:
12426
diff
changeset
|
117 new changeset 3:* merges remote changes with local (glob) |
12426 | 118 $ hg --cwd e tip --template '{desc}\n' |
12643
d08bb64888bc
tests: reintroduce ":$HGPORT" in test output
Mads Kiilerich <mads@kiilerich.com>
parents:
12535
diff
changeset
|
119 Automated merge with http://localhost:$HGPORT/ |
12426 | 120 $ hg clone a f |
121 updating to branch default | |
122 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
123 $ hg clone a g | |
124 updating to branch default | |
125 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
126 $ echo f > f/f | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
127 $ hg --cwd f ci -Amf |
12426 | 128 adding f |
129 $ echo g > g/g | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
130 $ hg --cwd g ci -Amg |
12426 | 131 adding g |
132 $ hg clone -q f h | |
133 $ hg clone -q g i | |
6206
0b6f12495276
fetch: switch the default parent used for a merge
Bryan O'Sullivan <bos@serpentine.com>
parents:
5798
diff
changeset
|
134 |
12426 | 135 should merge f into g |
6226
bd61e44eb2cc
fetch: don't proceed if working directory is missing files (issue988)
Bryan O'Sullivan <bos@serpentine.com>
parents:
6207
diff
changeset
|
136 |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
137 $ hg --cwd g fetch -d '0 0' --switch -m 'automated merge' ../f |
12426 | 138 pulling from ../f |
139 searching for changes | |
140 adding changesets | |
141 adding manifests | |
142 adding file changes | |
143 added 1 changesets with 1 changes to 1 files (+1 heads) | |
144 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
145 merging with 3:6343ca3eff20 |
12426 | 146 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
147 new changeset 4:f7faa0b7d3c6 merges remote changes with local |
12426 | 148 $ rm i/g |
6226
bd61e44eb2cc
fetch: don't proceed if working directory is missing files (issue988)
Bryan O'Sullivan <bos@serpentine.com>
parents:
6207
diff
changeset
|
149 |
12426 | 150 should abort, because i is modified |
6235
d16798000be0
test-fetch failed due to non-zero exit code
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6226
diff
changeset
|
151 |
12426 | 152 $ hg --cwd i fetch ../h |
22676
a014fdc97154
fetch: use cmdutil.bailifchanged()
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22046
diff
changeset
|
153 abort: uncommitted changes |
12426 | 154 [255] |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
155 |
12426 | 156 test fetch with named branches |
157 | |
158 $ hg init nbase | |
159 $ echo base > nbase/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
160 $ hg -R nbase ci -Am base |
12426 | 161 adding a |
162 $ hg -R nbase branch a | |
163 marked working directory as branch a | |
15615 | 164 (branches are permanent and global, did you want a bookmark?) |
12426 | 165 $ echo a > nbase/a |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
166 $ hg -R nbase ci -m a |
12426 | 167 $ hg -R nbase up -C 0 |
168 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
169 $ hg -R nbase branch b | |
170 marked working directory as branch b | |
171 $ echo b > nbase/b | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
172 $ hg -R nbase ci -Am b |
12426 | 173 adding b |
174 | |
175 pull in change on foreign branch | |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
176 |
12426 | 177 $ hg clone nbase n1 |
178 updating to branch default | |
179 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
180 $ hg clone nbase n2 | |
181 updating to branch default | |
182 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
183 $ hg -R n1 up -C a | |
184 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
185 $ echo aa > n1/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
186 $ hg -R n1 ci -m a1 |
12426 | 187 $ hg -R n2 up -C b |
188 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
189 $ hg -R n2 fetch -m 'merge' n1 |
12426 | 190 pulling from n1 |
191 searching for changes | |
192 adding changesets | |
193 adding manifests | |
194 adding file changes | |
195 added 1 changesets with 1 changes to 1 files | |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
196 |
12426 | 197 parent should be 2 (no automatic update) |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
198 |
12426 | 199 $ hg -R n2 parents --template '{rev}\n' |
200 2 | |
201 $ rm -fr n1 n2 | |
202 | |
203 pull in changes on both foreign and local branches | |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
204 |
12426 | 205 $ hg clone nbase n1 |
206 updating to branch default | |
207 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
208 $ hg clone nbase n2 | |
209 updating to branch default | |
210 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
211 $ hg -R n1 up -C a | |
212 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
213 $ echo aa > n1/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
214 $ hg -R n1 ci -m a1 |
12426 | 215 $ hg -R n1 up -C b |
216 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
217 $ echo bb > n1/b | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
218 $ hg -R n1 ci -m b1 |
12426 | 219 $ hg -R n2 up -C b |
220 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
221 $ hg -R n2 fetch -m 'merge' n1 |
12426 | 222 pulling from n1 |
223 searching for changes | |
224 adding changesets | |
225 adding manifests | |
226 adding file changes | |
227 added 2 changesets with 2 changes to 2 files | |
228 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
229 |
12426 | 230 parent should be 4 (fast forward) |
231 | |
232 $ hg -R n2 parents --template '{rev}\n' | |
233 4 | |
234 $ rm -fr n1 n2 | |
235 | |
236 pull changes on foreign (2 new heads) and local (1 new head) branches | |
237 with a local change | |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
238 |
12426 | 239 $ hg clone nbase n1 |
240 updating to branch default | |
241 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
242 $ hg clone nbase n2 | |
243 updating to branch default | |
244 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
245 $ hg -R n1 up -C a | |
246 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
247 $ echo a1 > n1/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
248 $ hg -R n1 ci -m a1 |
12426 | 249 $ hg -R n1 up -C b |
250 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
251 $ echo bb > n1/b | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
252 $ hg -R n1 ci -m b1 |
12426 | 253 $ hg -R n1 up -C 1 |
254 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
255 $ echo a2 > n1/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
256 $ hg -R n1 ci -m a2 |
12426 | 257 created new head |
258 $ hg -R n2 up -C b | |
259 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
260 $ echo change >> n2/c | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
261 $ hg -R n2 ci -A -m local |
12426 | 262 adding c |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
263 $ hg -R n2 fetch -d '0 0' -m 'merge' n1 |
12426 | 264 pulling from n1 |
265 searching for changes | |
266 adding changesets | |
267 adding manifests | |
268 adding file changes | |
269 added 3 changesets with 3 changes to 2 files (+2 heads) | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
270 updating to 5:3c4a837a864f |
12426 | 271 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
272 merging with 3:1267f84a9ea5 |
12426 | 273 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
274 new changeset 7:2cf2a1261f21 merges remote changes with local |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
275 |
12426 | 276 parent should be 7 (new merge changeset) |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
277 |
12426 | 278 $ hg -R n2 parents --template '{rev}\n' |
279 7 | |
280 $ rm -fr n1 n2 | |
281 | |
282 pull in changes on foreign (merge of local branch) and local (2 new | |
283 heads) with a local change | |
7007
a6b74fbb5ce0
fetch: added support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
6246
diff
changeset
|
284 |
12426 | 285 $ hg clone nbase n1 |
286 updating to branch default | |
287 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
288 $ hg clone nbase n2 | |
289 updating to branch default | |
290 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
291 $ hg -R n1 up -C a | |
292 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
293 $ hg -R n1 merge b | |
294 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
295 (branch merge, don't forget to commit) | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
296 $ hg -R n1 ci -m merge |
12426 | 297 $ hg -R n1 up -C 2 |
298 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
299 $ echo c > n1/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
300 $ hg -R n1 ci -m c |
12426 | 301 $ hg -R n1 up -C 2 |
302 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
303 $ echo cc > n1/a | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
304 $ hg -R n1 ci -m cc |
12426 | 305 created new head |
306 $ hg -R n2 up -C b | |
307 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
308 $ echo change >> n2/b | |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
309 $ hg -R n2 ci -A -m local |
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
310 $ hg -R n2 fetch -m 'merge' n1 |
12426 | 311 pulling from n1 |
312 searching for changes | |
313 adding changesets | |
314 adding manifests | |
315 adding file changes | |
316 added 3 changesets with 2 changes to 1 files (+2 heads) | |
317 not merging with 1 other new branch heads (use "hg heads ." and "hg merge" to merge them) | |
12711
b885f28fa4fa
fetch: fix and document exit codes (issue2356)
Matt Mackall <mpm@selenic.com>
parents:
12643
diff
changeset
|
318 [1] |
7049
6489ee64b522
fetch: use dirstate branch instead of first parents
Sune Foldager <cryo@cyanite.org>
parents:
7007
diff
changeset
|
319 |
12426 | 320 parent should be 3 (fetch did not merge anything) |
321 | |
322 $ hg -R n2 parents --template '{rev}\n' | |
323 3 | |
324 $ rm -fr n1 n2 | |
325 | |
326 pull in change on different branch than dirstate | |
327 | |
328 $ hg init n1 | |
329 $ echo a > n1/a | |
330 $ hg -R n1 ci -Am initial | |
331 adding a | |
332 $ hg clone n1 n2 | |
333 updating to branch default | |
334 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
335 $ echo b > n1/a | |
336 $ hg -R n1 ci -m next | |
337 $ hg -R n2 branch topic | |
338 marked working directory as branch topic | |
15615 | 339 (branches are permanent and global, did you want a bookmark?) |
15244
f6d5d01725db
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com>
parents:
15243
diff
changeset
|
340 $ hg -R n2 fetch -m merge n1 |
24368
55fd99a23fdc
fetch: use an abort hint where appropriate
Yuya Nishihara <yuya@tcha.org>
parents:
24365
diff
changeset
|
341 abort: working directory not at branch tip |
28964
9dcc9ed26d33
fetch: use single quotes around command hint
timeless <timeless@mozdev.org>
parents:
28549
diff
changeset
|
342 (use 'hg update' to check out branch tip) |
12426 | 343 [255] |
344 | |
345 parent should be 0 (fetch did not update or merge anything) | |
346 | |
347 $ hg -R n2 parents --template '{rev}\n' | |
348 0 | |
349 $ rm -fr n1 n2 | |
350 | |
351 test fetch with inactive branches | |
7855
aa1a87f7544f
regression test for issue1552
Benjamin Pollack <benjamin@bitquabit.com>
parents:
7344
diff
changeset
|
352 |
12426 | 353 $ hg init ib1 |
354 $ echo a > ib1/a | |
355 $ hg --cwd ib1 ci -Am base | |
356 adding a | |
357 $ hg --cwd ib1 branch second | |
358 marked working directory as branch second | |
15615 | 359 (branches are permanent and global, did you want a bookmark?) |
12426 | 360 $ echo b > ib1/b |
361 $ hg --cwd ib1 ci -Am onsecond | |
362 adding b | |
363 $ hg --cwd ib1 branch -f default | |
364 marked working directory as branch default | |
365 $ echo c > ib1/c | |
366 $ hg --cwd ib1 ci -Am newdefault | |
367 adding c | |
368 created new head | |
369 $ hg clone ib1 ib2 | |
370 updating to branch default | |
371 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
372 | |
373 fetch should succeed | |
374 | |
375 $ hg --cwd ib2 fetch ../ib1 | |
376 pulling from ../ib1 | |
377 searching for changes | |
378 no changes found | |
379 $ rm -fr ib1 ib2 | |
380 | |
381 test issue1726 | |
9093
0b2b269ba3d0
branch heads: fix regression introduced in e67e5b60e55f (issue1726)
Henrik Stuart <hg@hstuart.dk>
parents:
7855
diff
changeset
|
382 |
12426 | 383 $ hg init i1726r1 |
384 $ echo a > i1726r1/a | |
385 $ hg --cwd i1726r1 ci -Am base | |
386 adding a | |
387 $ hg clone i1726r1 i1726r2 | |
388 updating to branch default | |
389 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
390 $ echo b > i1726r1/a | |
391 $ hg --cwd i1726r1 ci -m second | |
392 $ echo c > i1726r2/a | |
393 $ hg --cwd i1726r2 ci -m third | |
394 $ HGMERGE=true hg --cwd i1726r2 fetch ../i1726r1 | |
395 pulling from ../i1726r1 | |
396 searching for changes | |
397 adding changesets | |
398 adding manifests | |
399 adding file changes | |
400 added 1 changesets with 1 changes to 1 files (+1 heads) | |
401 updating to 2:7837755a2789 | |
402 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
403 merging with 1:d1f0c6c48ebd | |
404 merging a | |
405 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
406 new changeset 3:* merges remote changes with local (glob) | |
407 $ hg --cwd i1726r2 heads default --template '{rev}\n' | |
408 3 | |
10580
612c142b7a82
fetch: fix newheads calculation (issue2047)
Sune Foldager <cryo@cyanite.org>
parents:
10398
diff
changeset
|
409 |
12426 | 410 test issue2047 |
7344
58fd3c718ca4
tests: add killdaemons helper script
Matt Mackall <mpm@selenic.com>
parents:
7049
diff
changeset
|
411 |
12426 | 412 $ hg -q init i2047a |
413 $ cd i2047a | |
414 $ echo a > a | |
415 $ hg -q ci -Am a | |
416 $ hg -q branch stable | |
417 $ echo b > b | |
418 $ hg -q ci -Am b | |
419 $ cd .. | |
420 $ hg -q clone -r 0 i2047a i2047b | |
421 $ cd i2047b | |
422 $ hg fetch ../i2047a | |
423 pulling from ../i2047a | |
424 searching for changes | |
425 adding changesets | |
426 adding manifests | |
427 adding file changes | |
428 added 1 changesets with 1 changes to 1 files | |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15623
diff
changeset
|
429 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15623
diff
changeset
|
430 $ cd .. |