[PATCH] dispatch: use --section.setting=value instead of --config=section.setting=value

Augie Fackler raf at durin42.com
Sun May 4 14:31:42 CDT 2014


On Fri, May 02, 2014 at 06:24:07PM +0200, Mads Kiilerich wrote:
> # HG changeset patch
> # User Mads Kiilerich <madski at unity3d.com>
> # Date 1398943909 -7200
> #      Thu May 01 13:31:49 2014 +0200
> # Branch stable
> # Node ID a9669ccfde3af288ad4b186e4f2ce8672cad4412
> # Parent  e88b1ad2871cd900262cde1633b561996d28388d
> dispatch: use --section.setting=value instead of --config=section.setting=value
>
> Convenient shortcut, looks more elegant than --config and is a fine supplement
> to normal command line options.

It's cute, but I'm not a fan: it opens up pseudo-random command line
API surface area that strikes me as likely to cause
backwards-compatibility headaches in the future.

>
> --config was apparently not documented anywhere.
>
> diff --git a/mercurial/context.py b/mercurial/context.py
> --- a/mercurial/context.py
> +++ b/mercurial/context.py
> @@ -419,8 +419,8 @@ class changectx(basectx):
>                  self._repo.ui.status(
>                      (_("note: using %s as ancestor of %s and %s\n") %
>                       (short(anc), short(self._node), short(n2))) +
> -                    ''.join(_("      alternatively, use --config "
> -                              "merge.preferancestor=%s\n") %
> +                    ''.join(_("      alternatively, use "
> +                              "--merge.preferancestor=%s\n") %
>                              short(n) for n in sorted(cahs) if n != anc))
>          return changectx(self._repo, anc)
>
> diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
> --- a/mercurial/dispatch.py
> +++ b/mercurial/dispatch.py
> @@ -98,7 +98,8 @@ def _runcatch(req):
>
>              # read --config before doing anything else
>              # (e.g. to change trust settings for reading .hg/hgrc)
> -            cfgs = _parseconfig(req.ui, _earlygetopt(['--config'], req.args))
> +            cfgs = _parseconfig(req.ui, _earlygetopt(['--config', '--.'],
> +                                req.args))
>
>              if req.repo:
>                  # copy configs that were passed on the cmdline (--config) to
> @@ -387,7 +388,8 @@ class cmdalias(object):
>          self.cmdname = cmd = args.pop(0)
>          args = map(util.expandpath, args)
>
> -        for invalidarg in ("--cwd", "-R", "--repository", "--repo", "--config"):
> +        for invalidarg in ("--cwd", "-R", "--repository", "--repo",
> +                           "--config", "--."):
>              if _earlygetopt([invalidarg], args):
>                  def fn(ui, *args):
>                      ui.warn(_("error in definition for alias '%s': %s may only "
> @@ -551,6 +553,10 @@ def _earlygetopt(aliases, args):
>      >>> args = ['x', '-Rbar', 'y']
>      >>> _earlygetopt(['-R'], args), args
>      (['bar'], ['x', 'y'])
> +
> +    >>> args = ['x--y.z', '--a.b=c', '-Rbar', '--a.b.c', '--d.e=f', 'y']
> +    >>> _earlygetopt(['--.'], args), args
> +    (['a.b=c', 'a.b.c=--d.e=f'], ['x--y.z', '-Rbar', 'y'])
>      """
>      try:
>          argcount = args.index("--")
> @@ -564,7 +570,8 @@ def _earlygetopt(aliases, args):
>          equals = arg.find('=')
>          if equals > -1:
>              arg = arg[:equals]
> -        if arg in aliases:
> +        dashdashdot = re.match(r'--.*\.', arg) and '--.' in aliases
> +        if arg in aliases or dashdashdot:
>              del args[pos]
>              if equals > -1:
>                  v = fullarg[equals + 1:]
> @@ -575,6 +582,8 @@ def _earlygetopt(aliases, args):
>                      break
>                  v = args.pop(pos)
>                  argcount -= 2
> +            if dashdashdot:
> +                v = arg[2:] + '=' + v
>              values.append(v)
>          elif arg[:2] in shortopts:
>              # short option can have no following space, e.g. hg log -Rfoo
> diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
> --- a/mercurial/help/config.txt
> +++ b/mercurial/help/config.txt
> @@ -12,6 +12,9 @@ by ``name = value`` entries::
>  The above entries will be referred to as ``ui.username`` and
>  ``ui.verbose``, respectively. See the Syntax section below.
>
> +Configuration values can be specified on the command line as
> +``--ui.username=Name`` or ``--ui.verbose True``.
> +
>  Files
>  =====
>
> @@ -1288,7 +1291,7 @@ For a quick setup in a trusted environme
>  you want it to accept pushes from anybody, you can use the following
>  command line::
>
> -    $ hg --config web.allow_push=* --config web.push_ssl=False serve
> +    $ hg --web.allow_push=* --web.push_ssl=False serve
>
>  Note that this will allow anybody to push anything to the server and
>  that this should not be used for public servers.
> diff --git a/tests/test-globalopts.t b/tests/test-globalopts.t
> --- a/tests/test-globalopts.t
> +++ b/tests/test-globalopts.t
> @@ -213,6 +213,8 @@ Testing --config:
>
>    $ hg --cwd c --config paths.quuxfoo=bar paths | grep quuxfoo > /dev/null && echo quuxfoo
>    quuxfoo
> +  $ hg --cwd c --paths.quuxfoo=bar paths | grep quuxfoo > /dev/null && echo quuxfoo
> +  quuxfoo
>    $ hg --cwd c --config '' tip -q
>    abort: malformed --config option: '' (use --config section.name=value)
>    [255]
> diff --git a/tests/test-merge-criss-cross.t b/tests/test-merge-criss-cross.t
> --- a/tests/test-merge-criss-cross.t
> +++ b/tests/test-merge-criss-cross.t
> @@ -25,7 +25,7 @@ Criss cross merging
>
>    $ hg up -r3
>    note: using 0f6b37dbe527 as ancestor of adfe50279922 and cf89f02107e5
> -        alternatively, use --config merge.preferancestor=40663881a6dd
> +        alternatively, use --merge.preferancestor=40663881a6dd
>    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>    $ echo '6 second change' > f2
>    $ hg ci -m '6 second change f2'
> @@ -76,7 +76,7 @@ Criss cross merging
>
>    $ hg merge -v --debug --tool internal:dump 5
>    note: using 0f6b37dbe527 as ancestor of 3b08d01b0ab5 and adfe50279922
> -        alternatively, use --config merge.preferancestor=40663881a6dd
> +        alternatively, use --merge.preferancestor=40663881a6dd
>      searching for copies back to rev 3
>    resolving manifests
>     branchmerge: True, force: False, partial: False
> @@ -114,9 +114,9 @@ Criss cross merging
>    2 first change
>
>    $ hg up -qC .
> -  $ hg merge -v --tool internal:dump 5 --config merge.preferancestor="null 40663881 3b08d"
> +  $ hg merge -v --tool internal:dump 5 --merge.preferancestor="null 40663881 3b08d"
>    note: using 40663881a6dd as ancestor of 3b08d01b0ab5 and adfe50279922
> -        alternatively, use --config merge.preferancestor=0f6b37dbe527
> +        alternatively, use --merge.preferancestor=0f6b37dbe527
>    resolving manifests
>    merging f1
>    0 files updated, 0 files merged, 0 files removed, 1 files unresolved
> @@ -127,7 +127,7 @@ Redo merge with merge.preferancestor="*"
>
>    $ rm f*
>    $ hg up -qC .
> -  $ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor="*"
> +  $ hg merge -v --debug --tool internal:dump 5 --merge.preferancestor="*"
>    note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
>
>    calculating bids for ancestor 0f6b37dbe527
> @@ -170,9 +170,9 @@ The other way around:
>
>    $ hg up -C -r5
>    note: using 0f6b37dbe527 as ancestor of 3b08d01b0ab5 and adfe50279922
> -        alternatively, use --config merge.preferancestor=40663881a6dd
> +        alternatively, use --merge.preferancestor=40663881a6dd
>    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
> -  $ hg merge -v --debug --config merge.preferancestor="*"
> +  $ hg merge -v --debug --merge.preferancestor="*"
>    note: merging adfe50279922+ and 3b08d01b0ab5 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
>
>    calculating bids for ancestor 0f6b37dbe527
> @@ -213,13 +213,13 @@ The other way around:
>  Verify how the output looks and and how verbose it is:
>
>    $ hg up -qC
> -  $ hg merge --config merge.preferancestor="*"
> +  $ hg merge --merge.preferancestor="*"
>    note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
>    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>    (branch merge, don't forget to commit)
>
>    $ hg up -qC
> -  $ hg merge -v --config merge.preferancestor="*"
> +  $ hg merge -v --merge.preferancestor="*"
>    note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
>
>    calculating bids for ancestor 0f6b37dbe527
> @@ -238,7 +238,7 @@ Verify how the output looks and and how
>    (branch merge, don't forget to commit)
>
>    $ hg up -qC
> -  $ hg merge -v --debug --config merge.preferancestor="*"
> +  $ hg merge -v --debug --merge.preferancestor="*"
>    note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
>
>    calculating bids for ancestor 0f6b37dbe527
> @@ -294,7 +294,7 @@ http://stackoverflow.com/questions/93500
>
>    $ hg merge
>    note: using 70008a2163f6 as ancestor of 0d355fdef312 and 4b8b546a3eef
> -        alternatively, use --config merge.preferancestor=b211bbc6eb3c
> +        alternatively, use --merge.preferancestor=b211bbc6eb3c
>    merging x
>    0 files updated, 1 files merged, 0 files removed, 0 files unresolved
>    (branch merge, don't forget to commit)
> @@ -306,9 +306,9 @@ http://stackoverflow.com/questions/93500
>
>    $ hg up -qC .
>
> -  $ hg merge --config merge.preferancestor=b211bbc6eb3c
> +  $ hg merge --merge.preferancestor=b211bbc6eb3c
>    note: using b211bbc6eb3c as ancestor of 0d355fdef312 and 4b8b546a3eef
> -        alternatively, use --config merge.preferancestor=70008a2163f6
> +        alternatively, use --merge.preferancestor=70008a2163f6
>    merging x
>    0 files updated, 1 files merged, 0 files removed, 0 files unresolved
>    (branch merge, don't forget to commit)
> @@ -320,7 +320,7 @@ http://stackoverflow.com/questions/93500
>
>    $ hg up -qC .
>
> -  $ hg merge -v --config merge.preferancestor="*"
> +  $ hg merge -v --merge.preferancestor="*"
>    note: merging 0d355fdef312+ and 4b8b546a3eef using bids from ancestors 70008a2163f6 and b211bbc6eb3c
>
>    calculating bids for ancestor 70008a2163f6
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list