##// END OF EJS Templates
streamclone: new server config and some API changes for narrow stream clones...
Pulkit Goyal -
r40374:af62936c default
parent child Browse files
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 1687 # to avoid compression to consumers of the bundle.
1688 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 1702 requirements = _formatrequirementsspec(repo.requirements)
1692 1703 part = bundler.newpart('stream2', data=it)
1693 1704 part.addparam('bytecount', '%d' % bytecount, mandatory=True)
@@ -610,6 +610,9 coreconfigitem('experimental', 'server.f
610 610 coreconfigitem('experimental', 'server.manifestdata.recommended-batch-size',
611 611 default=100000,
612 612 )
613 coreconfigitem('experimental.server', 'stream-narrow-clones',
614 default=False,
615 )
613 616 coreconfigitem('experimental', 'single-head-per-branch',
614 617 default=False,
615 618 )
@@ -531,7 +531,7 def _emit2(repo, entries, totalfilesize)
531 531 finally:
532 532 fp.close()
533 533
534 def generatev2(repo):
534 def generatev2(repo, includes, excludes):
535 535 """Emit content for version 2 of a streaming clone.
536 536
537 537 the data stream consists the following entries:
@@ -544,6 +544,10 def generatev2(repo):
544 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 551 with repo.lock():
548 552
549 553 entries = []
General Comments 0
You need to be logged in to leave comments. Login now