##// END OF EJS Templates
clone: add a server-side option to disable full getbundles (pull-based clones)...
Siddharth Agarwal -
r32260:d0d9a4fc default
parent child Browse files
Show More
@@ -1660,6 +1660,12 b' Controls generic server settings.'
1660 1660 When set, clients will try to use the uncompressed streaming
1661 1661 protocol. (default: False)
1662 1662
1663 ``disablefullbundle``
1664 When set, servers will refuse attempts to do pull-based clones.
1665 If this option is set, ``preferuncompressed`` and/or clone bundles
1666 are highly recommended. Partial clones will still be allowed.
1667 (default: False)
1668
1663 1669 ``validate``
1664 1670 Whether to validate the completeness of pushed changesets by
1665 1671 checking that all new file revisions specified in manifests are
@@ -16,6 +16,7 b' from .i18n import _'
16 16 from .node import (
17 17 bin,
18 18 hex,
19 nullid,
19 20 )
20 21
21 22 from . import (
@@ -841,6 +842,17 b' def getbundle(repo, proto, others):'
841 842 hint=bundle2requiredhint)
842 843
843 844 try:
845 if repo.ui.configbool('server', 'disablefullbundle', False):
846 # Check to see if this is a full clone.
847 clheads = set(repo.changelog.heads())
848 heads = set(opts.get('heads', set()))
849 common = set(opts.get('common', set()))
850 common.discard(nullid)
851 if not common and clheads == heads:
852 raise error.Abort(
853 _('server has pull-based clones disabled'),
854 hint=_('remove --pull if specified or upgrade Mercurial'))
855
844 856 chunks = exchange.getbundlechunks(repo, 'serve', **opts)
845 857 except error.Abort as exc:
846 858 # cleanly forward Abort error to the client
@@ -365,3 +365,41 b' Check error reporting while pulling/clon'
365 365 this is an exercise
366 366 [255]
367 367 $ cat error.log
368
369 disable pull-based clones
370
371 $ hg -R test serve -p $HGPORT1 -d --pid-file=hg4.pid -E error.log --config server.disablefullbundle=True
372 $ cat hg4.pid >> $DAEMON_PIDS
373 $ hg clone http://localhost:$HGPORT1/ disable-pull-clone
374 requesting all changes
375 abort: remote error:
376 server has pull-based clones disabled
377 [255]
378
379 ... but keep stream clones working
380
381 $ hg clone --uncompressed --noupdate http://localhost:$HGPORT1/ test-stream-clone
382 streaming all changes
383 * files to transfer, * of data (glob)
384 transferred * in * seconds (* KB/sec) (glob)
385 searching for changes
386 no changes found
387
388 ... and also keep partial clones and pulls working
389 $ hg clone http://localhost:$HGPORT1 --rev 0 test-partial-clone
390 adding changesets
391 adding manifests
392 adding file changes
393 added 1 changesets with 4 changes to 4 files
394 updating to branch default
395 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
396 $ hg pull -R test-partial-clone
397 pulling from http://localhost:$HGPORT1/
398 searching for changes
399 adding changesets
400 adding manifests
401 adding file changes
402 added 2 changesets with 3 changes to 3 files
403 (run 'hg update' to get a working copy)
404
405 $ cat error.log
@@ -354,6 +354,44 b' check abort error reporting while pullin'
354 354 [255]
355 355 $ cat error.log
356 356
357 disable pull-based clones
358
359 $ hg -R test serve -p $HGPORT1 -d --pid-file=hg4.pid -E error.log --config server.disablefullbundle=True
360 $ cat hg4.pid >> $DAEMON_PIDS
361 $ hg clone http://localhost:$HGPORT1/ disable-pull-clone
362 requesting all changes
363 remote: abort: server has pull-based clones disabled
364 abort: pull failed on remote
365 (remove --pull if specified or upgrade Mercurial)
366 [255]
367
368 ... but keep stream clones working
369
370 $ hg clone --uncompressed --noupdate http://localhost:$HGPORT1/ test-stream-clone
371 streaming all changes
372 * files to transfer, * of data (glob)
373 transferred * in * seconds (*/sec) (glob)
374 searching for changes
375 no changes found
376 $ cat error.log
377
378 ... and also keep partial clones and pulls working
379 $ hg clone http://localhost:$HGPORT1 --rev 0 test-partial-clone
380 adding changesets
381 adding manifests
382 adding file changes
383 added 1 changesets with 4 changes to 4 files
384 updating to branch default
385 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
386 $ hg pull -R test-partial-clone
387 pulling from http://localhost:$HGPORT1/
388 searching for changes
389 adding changesets
390 adding manifests
391 adding file changes
392 added 2 changesets with 3 changes to 3 files
393 (run 'hg update' to get a working copy)
394
357 395 corrupt cookies file should yield a warning
358 396
359 397 $ cat > $TESTTMP/cookies.txt << EOF
General Comments 0
You need to be logged in to leave comments. Login now