Mercurial > hg
changeset 51280:c17cf2d51ff4 stable
bundle: do not detect --base argument that match nothing as lack of argument
With the previous version of the code, if --base did not match anything, it will
be handled as if no --base was provided and will fallback to using discovery
with the default path. This has two issues :
- The resulting bundle won't match what the user requested,
- if not default path is configured, it will crash.
We now properly distinct between the two cases and if the --base query does not
find any changeset, we will assume that everything under --rev needs to be sent.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 27 Dec 2023 18:02:26 +0100 |
parents | 51021612aea7 |
children | bf7c24e12fad |
files | mercurial/commands.py tests/test-bundle-r.t |
diffstat | 2 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Dec 27 18:42:13 2023 +0100 +++ b/mercurial/commands.py Wed Dec 27 18:02:26 2023 +0100 @@ -1592,13 +1592,13 @@ _(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 @@ 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")
--- a/tests/test-bundle-r.t Wed Dec 27 18:42:13 2023 +0100 +++ b/tests/test-bundle-r.t Wed Dec 27 18:02:26 2023 +0100 @@ -141,14 +141,9 @@ 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