Mercurial > hg-stable
diff mercurial/commands.py @ 51154: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 | 752c5a5b73c6 |
children | c6560ee526d2 7e6aae033d8d |
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")