Mercurial > hg
comparison tests/test-pull-bundle.t @ 37498:aacfca6f9767
wireproto: support for pullbundles
Pullbundles are similar to clonebundles, but served as normal inline
bundle streams. They are almost transparent to the client -- the only
visible effect is that the client might get less changes than what it
asked for, i.e. not all requested head revisions are provided.
The client announces support for the necessary retries with the
partial-pull capability. After receiving a partial bundle, it updates
the set of revisions shared with the server and drops all now-known
heads from the request list. It will then rerun getbundle until
no changes are received or all remote heads are present.
Extend badserverext to support per-socket limit, i.e. don't assume that
the same limits should be applied to all sockets.
Differential Revision: https://phab.mercurial-scm.org/D1856
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Thu, 18 Jan 2018 12:54:01 +0100 |
parents | |
children | 20808ddb4990 |
comparison
equal
deleted
inserted
replaced
37497:1541e1a8e87d | 37498:aacfca6f9767 |
---|---|
1 $ hg init repo | |
2 $ cd repo | |
3 $ echo foo > foo | |
4 $ hg ci -qAm 'add foo' | |
5 $ echo >> foo | |
6 $ hg ci -m 'change foo' | |
7 $ hg up -qC 0 | |
8 $ echo bar > bar | |
9 $ hg ci -qAm 'add bar' | |
10 | |
11 $ hg log | |
12 changeset: 2:effea6de0384 | |
13 tag: tip | |
14 parent: 0:bbd179dfa0a7 | |
15 user: test | |
16 date: Thu Jan 01 00:00:00 1970 +0000 | |
17 summary: add bar | |
18 | |
19 changeset: 1:ed1b79f46b9a | |
20 user: test | |
21 date: Thu Jan 01 00:00:00 1970 +0000 | |
22 summary: change foo | |
23 | |
24 changeset: 0:bbd179dfa0a7 | |
25 user: test | |
26 date: Thu Jan 01 00:00:00 1970 +0000 | |
27 summary: add foo | |
28 | |
29 $ cd .. | |
30 | |
31 Test pullbundle functionality | |
32 | |
33 $ cd repo | |
34 $ cat <<EOF > .hg/hgrc | |
35 > [server] | |
36 > pullbundle = True | |
37 > [extensions] | |
38 > blackbox = | |
39 > EOF | |
40 $ hg bundle --base null -r 0 .hg/0.hg | |
41 1 changesets found | |
42 $ hg bundle --base 0 -r 1 .hg/1.hg | |
43 1 changesets found | |
44 $ hg bundle --base 1 -r 2 .hg/2.hg | |
45 1 changesets found | |
46 $ cat <<EOF > .hg/pullbundles.manifest | |
47 > 2.hg heads=effea6de0384e684f44435651cb7bd70b8735bd4 bases=bbd179dfa0a71671c253b3ae0aa1513b60d199fa | |
48 > 1.hg heads=ed1b79f46b9a29f5a6efa59cf12fcfca43bead5a bases=bbd179dfa0a71671c253b3ae0aa1513b60d199fa | |
49 > 0.hg heads=bbd179dfa0a71671c253b3ae0aa1513b60d199fa | |
50 > EOF | |
51 $ hg --config blackbox.track=debug --debug serve -p $HGPORT2 -d --pid-file=../repo.pid | |
52 listening at http://localhost:$HGPORT2/ (bound to $LOCALIP:$HGPORT2) | |
53 $ cat ../repo.pid >> $DAEMON_PIDS | |
54 $ cd .. | |
55 $ hg clone -r 0 http://localhost:$HGPORT2/ repo.pullbundle | |
56 adding changesets | |
57 adding manifests | |
58 adding file changes | |
59 added 1 changesets with 1 changes to 1 files | |
60 new changesets bbd179dfa0a7 | |
61 updating to branch default | |
62 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
63 $ cd repo.pullbundle | |
64 $ hg pull -r 1 | |
65 pulling from http://localhost:$HGPORT2/ | |
66 searching for changes | |
67 adding changesets | |
68 adding manifests | |
69 adding file changes | |
70 added 1 changesets with 1 changes to 1 files | |
71 new changesets ed1b79f46b9a | |
72 (run 'hg update' to get a working copy) | |
73 $ hg pull -r 2 | |
74 pulling from http://localhost:$HGPORT2/ | |
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) | |
80 new changesets effea6de0384 | |
81 (run 'hg heads' to see heads, 'hg merge' to merge) | |
82 $ cd .. | |
83 $ killdaemons.py | |
84 $ grep 'sending pullbundle ' repo/.hg/blackbox.log | |
85 * sending pullbundle "0.hg" (glob) | |
86 * sending pullbundle "1.hg" (glob) | |
87 * sending pullbundle "2.hg" (glob) | |
88 $ rm repo/.hg/blackbox.log | |
89 | |
90 Test pullbundle functionality for incremental pulls | |
91 | |
92 $ cd repo | |
93 $ hg --config blackbox.track=debug --debug serve -p $HGPORT2 -d --pid-file=../repo.pid | |
94 listening at http://localhost:$HGPORT2/ (bound to $LOCALIP:$HGPORT2) | |
95 $ cat ../repo.pid >> $DAEMON_PIDS | |
96 $ cd .. | |
97 $ hg clone http://localhost:$HGPORT2/ repo.pullbundle2 | |
98 requesting all changes | |
99 adding changesets | |
100 adding manifests | |
101 adding file changes | |
102 added 1 changesets with 1 changes to 1 files | |
103 adding changesets | |
104 adding manifests | |
105 adding file changes | |
106 added 1 changesets with 1 changes to 1 files | |
107 adding changesets | |
108 adding manifests | |
109 adding file changes | |
110 added 1 changesets with 1 changes to 1 files (+1 heads) | |
111 new changesets bbd179dfa0a7:ed1b79f46b9a | |
112 updating to branch default | |
113 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
114 $ killdaemons.py | |
115 $ grep 'sending pullbundle ' repo/.hg/blackbox.log | |
116 * sending pullbundle "0.hg" (glob) | |
117 * sending pullbundle "2.hg" (glob) | |
118 * sending pullbundle "1.hg" (glob) | |
119 $ rm repo/.hg/blackbox.log | |
120 | |
121 Test recovery from misconfigured server sending no new data | |
122 | |
123 $ cd repo | |
124 $ cat <<EOF > .hg/pullbundles.manifest | |
125 > 0.hg heads=ed1b79f46b9a29f5a6efa59cf12fcfca43bead5a bases=bbd179dfa0a71671c253b3ae0aa1513b60d199fa | |
126 > 0.hg heads=bbd179dfa0a71671c253b3ae0aa1513b60d199fa | |
127 > EOF | |
128 $ hg --config blackbox.track=debug --debug serve -p $HGPORT2 -d --pid-file=../repo.pid | |
129 listening at http://localhost:$HGPORT2/ (bound to $LOCALIP:$HGPORT2) | |
130 $ cat ../repo.pid >> $DAEMON_PIDS | |
131 $ cd .. | |
132 $ hg clone -r 0 http://localhost:$HGPORT2/ repo.pullbundle3 | |
133 adding changesets | |
134 adding manifests | |
135 adding file changes | |
136 added 1 changesets with 1 changes to 1 files | |
137 new changesets bbd179dfa0a7 | |
138 updating to branch default | |
139 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
140 $ cd repo.pullbundle3 | |
141 $ hg pull -r 1 | |
142 pulling from http://localhost:$HGPORT2/ | |
143 searching for changes | |
144 adding changesets | |
145 adding manifests | |
146 adding file changes | |
147 added 0 changesets with 0 changes to 1 files | |
148 abort: 00changelog.i@ed1b79f46b9a: no node! | |
149 [255] | |
150 $ cd .. | |
151 $ killdaemons.py | |
152 $ grep 'sending pullbundle ' repo/.hg/blackbox.log | |
153 * sending pullbundle "0.hg" (glob) | |
154 * sending pullbundle "0.hg" (glob) | |
155 $ rm repo/.hg/blackbox.log |