Show More
@@ -0,0 +1,31 b'' | |||||
|
1 | ||||
|
2 | Test wire protocol unbundle with hashed heads (capability: unbundlehash) | |||
|
3 | ||||
|
4 | Create a remote repository. | |||
|
5 | ||||
|
6 | $ hg init remote | |||
|
7 | $ hg serve -R remote --config web.push_ssl=False --config web.allow_push=* -p $HGPORT -d --pid-file=hg1.pid -E error.log -A access.log | |||
|
8 | $ cat hg1.pid >> $DAEMON_PIDS | |||
|
9 | ||||
|
10 | Clone the repository and push a change. | |||
|
11 | ||||
|
12 | $ hg clone http://localhost:$HGPORT/ local | |||
|
13 | no changes found | |||
|
14 | updating to branch default | |||
|
15 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
16 | $ touch local/README | |||
|
17 | $ hg ci -R local -A -m hoge | |||
|
18 | adding README | |||
|
19 | $ hg push -R local | |||
|
20 | pushing to http://localhost:$HGPORT/ | |||
|
21 | searching for changes | |||
|
22 | remote: adding changesets | |||
|
23 | remote: adding manifests | |||
|
24 | remote: adding file changes | |||
|
25 | remote: added 1 changesets with 1 changes to 1 files | |||
|
26 | ||||
|
27 | Ensure hashed heads format is used. | |||
|
28 | The hash here is always the same since the remote repository only has the null head. | |||
|
29 | ||||
|
30 | $ cat access.log | grep unbundle | |||
|
31 | * - - [*] "POST /?cmd=unbundle&heads=686173686564+6768033e216468247bd031a0a2d9876d79818f8f HTTP/1.1" 200 - (glob) |
@@ -139,7 +139,13 b' class wirerepository(repo.repository):' | |||||
139 | remote server as a bundle. Return an integer indicating the |
|
139 | remote server as a bundle. Return an integer indicating the | |
140 | result of the push (see localrepository.addchangegroup()).''' |
|
140 | result of the push (see localrepository.addchangegroup()).''' | |
141 |
|
141 | |||
142 | ret, output = self._callpush("unbundle", cg, heads=encodelist(heads)) |
|
142 | if self.capable('unbundlehash'): | |
|
143 | heads = encodelist(['hashed', | |||
|
144 | util.sha1(''.join(sorted(heads))).digest()]) | |||
|
145 | else: | |||
|
146 | heads = encodelist(heads) | |||
|
147 | ||||
|
148 | ret, output = self._callpush("unbundle", cg, heads=heads) | |||
143 | if ret == "": |
|
149 | if ret == "": | |
144 | raise error.ResponseError( |
|
150 | raise error.ResponseError( | |
145 | _('push failed:'), output) |
|
151 | _('push failed:'), output) | |
@@ -216,7 +222,8 b' def branches(repo, proto, nodes):' | |||||
216 | return "".join(r) |
|
222 | return "".join(r) | |
217 |
|
223 | |||
218 | def capabilities(repo, proto): |
|
224 | def capabilities(repo, proto): | |
219 |
caps = 'lookup changegroupsubset branchmap pushkey known getbundle' |
|
225 | caps = ('lookup changegroupsubset branchmap pushkey known getbundle ' | |
|
226 | 'unbundlehash').split() | |||
220 | if _allowstream(repo.ui): |
|
227 | if _allowstream(repo.ui): | |
221 | requiredformats = repo.requirements & repo.supportedformats |
|
228 | requiredformats = repo.requirements & repo.supportedformats | |
222 | # if our local revlogs are just revlogv1, add 'stream' cap |
|
229 | # if our local revlogs are just revlogv1, add 'stream' cap | |
@@ -353,7 +360,9 b' def unbundle(repo, proto, heads):' | |||||
353 |
|
360 | |||
354 | def check_heads(): |
|
361 | def check_heads(): | |
355 | heads = repo.heads() |
|
362 | heads = repo.heads() | |
356 | return their_heads == ['force'] or their_heads == heads |
|
363 | heads_hash = util.sha1(''.join(sorted(heads))).digest() | |
|
364 | return (their_heads == ['force'] or their_heads == heads or | |||
|
365 | their_heads == ['hashed', heads_hash]) | |||
357 |
|
366 | |||
358 | proto.redirect() |
|
367 | proto.redirect() | |
359 |
|
368 |
@@ -943,7 +943,7 b' capabilities' | |||||
943 | $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo |
|
943 | $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo | |
944 | 200 Script output follows |
|
944 | 200 Script output follows | |
945 |
|
945 | |||
946 | lookup changegroupsubset branchmap pushkey known getbundle unbundle=HG10GZ,HG10BZ,HG10UN |
|
946 | lookup changegroupsubset branchmap pushkey known getbundle unbundlehash unbundle=HG10GZ,HG10BZ,HG10UN | |
947 |
|
947 | |||
948 | heads |
|
948 | heads | |
949 |
|
949 |
General Comments 0
You need to be logged in to leave comments.
Login now