Show More
@@ -0,0 +1,39 | |||||
|
1 | Tests narrow stream clones | |||
|
2 | ||||
|
3 | $ . "$TESTDIR/narrow-library.sh" | |||
|
4 | ||||
|
5 | Server setup | |||
|
6 | ||||
|
7 | $ hg init master | |||
|
8 | $ cd master | |||
|
9 | $ mkdir dir | |||
|
10 | $ mkdir dir/src | |||
|
11 | $ cd dir/src | |||
|
12 | $ for x in `$TESTDIR/seq.py 20`; do echo $x > "f$x"; hg add "f$x"; hg commit -m "Commit src $x"; done | |||
|
13 | ||||
|
14 | $ cd .. | |||
|
15 | $ mkdir tests | |||
|
16 | $ cd tests | |||
|
17 | $ for x in `$TESTDIR/seq.py 20`; do echo $x > "f$x"; hg add "f$x"; hg commit -m "Commit src $x"; done | |||
|
18 | $ cd ../../.. | |||
|
19 | ||||
|
20 | Trying to stream clone when the server does not support it | |||
|
21 | ||||
|
22 | $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10" --stream | |||
|
23 | streaming all changes | |||
|
24 | remote: abort: server does not support narrow stream clones | |||
|
25 | abort: pull failed on remote | |||
|
26 | [255] | |||
|
27 | ||||
|
28 | Enable stream clone on the server | |||
|
29 | ||||
|
30 | $ echo "[server]" >> master/.hg/hgrc | |||
|
31 | $ echo "stream-narrow-clones=True" >> master/.hg/hgrc | |||
|
32 | ||||
|
33 | Cloning a specific file when stream clone is supported | |||
|
34 | ||||
|
35 | $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10" --stream | |||
|
36 | streaming all changes | |||
|
37 | remote: abort: server does not support narrow stream clones | |||
|
38 | abort: pull failed on remote | |||
|
39 | [255] |
@@ -1687,7 +1687,18 def addpartbundlestream2(bundler, repo, | |||||
1687 | # to avoid compression to consumers of the bundle. |
|
1687 | # to avoid compression to consumers of the bundle. | |
1688 | bundler.prefercompressed = False |
|
1688 | bundler.prefercompressed = False | |
1689 |
|
1689 | |||
1690 | filecount, bytecount, it = streamclone.generatev2(repo) |
|
1690 | # get the includes and excludes | |
|
1691 | includepats = kwargs.get(r'includepats') | |||
|
1692 | excludepats = kwargs.get(r'excludepats') | |||
|
1693 | ||||
|
1694 | narrowstream = repo.ui.configbool('experimental.server', | |||
|
1695 | 'stream-narrow-clones') | |||
|
1696 | ||||
|
1697 | if (includepats or excludepats) and not narrowstream: | |||
|
1698 | raise error.Abort(_('server does not support narrow stream clones')) | |||
|
1699 | ||||
|
1700 | filecount, bytecount, it = streamclone.generatev2(repo, includepats, | |||
|
1701 | excludepats) | |||
1691 | requirements = _formatrequirementsspec(repo.requirements) |
|
1702 | requirements = _formatrequirementsspec(repo.requirements) | |
1692 | part = bundler.newpart('stream2', data=it) |
|
1703 | part = bundler.newpart('stream2', data=it) | |
1693 | part.addparam('bytecount', '%d' % bytecount, mandatory=True) |
|
1704 | part.addparam('bytecount', '%d' % bytecount, mandatory=True) |
@@ -610,6 +610,9 coreconfigitem('experimental', 'server.f | |||||
610 | coreconfigitem('experimental', 'server.manifestdata.recommended-batch-size', |
|
610 | coreconfigitem('experimental', 'server.manifestdata.recommended-batch-size', | |
611 | default=100000, |
|
611 | default=100000, | |
612 | ) |
|
612 | ) | |
|
613 | coreconfigitem('experimental.server', 'stream-narrow-clones', | |||
|
614 | default=False, | |||
|
615 | ) | |||
613 | coreconfigitem('experimental', 'single-head-per-branch', |
|
616 | coreconfigitem('experimental', 'single-head-per-branch', | |
614 | default=False, |
|
617 | default=False, | |
615 | ) |
|
618 | ) |
@@ -531,7 +531,7 def _emit2(repo, entries, totalfilesize) | |||||
531 | finally: |
|
531 | finally: | |
532 | fp.close() |
|
532 | fp.close() | |
533 |
|
533 | |||
534 | def generatev2(repo): |
|
534 | def generatev2(repo, includes, excludes): | |
535 | """Emit content for version 2 of a streaming clone. |
|
535 | """Emit content for version 2 of a streaming clone. | |
536 |
|
536 | |||
537 | the data stream consists the following entries: |
|
537 | the data stream consists the following entries: | |
@@ -544,6 +544,10 def generatev2(repo): | |||||
544 | Returns a 3-tuple of (file count, file size, data iterator). |
|
544 | Returns a 3-tuple of (file count, file size, data iterator). | |
545 | """ |
|
545 | """ | |
546 |
|
546 | |||
|
547 | # temporarily raise error until we add storage level logic | |||
|
548 | if includes or excludes: | |||
|
549 | raise error.Abort(_("server does not support narrow stream clones")) | |||
|
550 | ||||
547 | with repo.lock(): |
|
551 | with repo.lock(): | |
548 |
|
552 | |||
549 | entries = [] |
|
553 | entries = [] |
General Comments 0
You need to be logged in to leave comments.
Login now