diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1592,13 +1592,13 @@ def bundle(ui, repo, fname, *dests, **op _(b'packed bundles cannot be produced by "hg bundle"'), hint=_(b"use 'hg debugcreatestreamclonebundle'"), ) - + base_opt = opts.get('base') if opts.get('all'): if dests: raise error.InputError( _(b"--all is incompatible with specifying destinations") ) - if opts.get('base'): + if base_opt: ui.warn(_(b"ignoring --base because --all was specified\n")) if opts.get('exact'): ui.warn(_(b"ignoring --exact because --all was specified\n")) @@ -1608,19 +1608,24 @@ def bundle(ui, repo, fname, *dests, **op raise error.InputError( _(b"--exact is incompatible with specifying destinations") ) - if opts.get('base'): + if base_opt: ui.warn(_(b"ignoring --base because --exact was specified\n")) base = repo.revs(b'parents(%ld) - %ld', revs, revs) if not base: base = [nullrev] + elif base_opt: + base = logcmdutil.revrange(repo, base_opt) + if not base: + # base specified, but nothing was selected + base = [nullrev] else: - base = logcmdutil.revrange(repo, opts.get('base')) + base = None if cgversion not in changegroup.supportedoutgoingversions(repo): raise error.Abort( _(b"repository does not support bundle version %s") % cgversion ) - if base: + if base is not None: if dests: raise error.InputError( _(b"--base is incompatible with specifying destinations") diff --git a/tests/test-bundle-r.t b/tests/test-bundle-r.t --- a/tests/test-bundle-r.t +++ b/tests/test-bundle-r.t @@ -141,14 +141,9 @@ should fail ignoring --base because --all was specified 9 changesets found $ hg -R test bundle --base 3-3 -r tip test-base-match-nothing-with-dest.hg --config paths.default=$TESTTMP/test-3 - searching for changes (known-bad-output !) - 1 changesets found (known-bad-output !) - 5 changesets found (missing-correct-output !) + 5 changesets found $ hg -R test bundle --base 3-3 -r tip test-base-match-nothing-no-dest.hg - config error: default repository not configured! (known-bad-output !) - (see 'hg help config.paths') (known-bad-output !) - 5 changesets found (missing-correct-output !) - [30] + 5 changesets found $ hg -R test bundle --base 3 -r tip test-bundle-should-fail.hg 1 changesets found