Rodrigo: for some reason, patchwork thinks you are Martin. Any idea why?
https://patchwork.mercurial-scm.org/patch/19133/
On 3/14/17 10:16 PM, Rodrigo Damazio via Mercurial-devel wrote:
On Tue, Mar 14, 2017 at 12:50 PM, David Soria Parra
<d...@experimentalworks.net <mailto:d...@experimentalworks.net>> wrote:
On Sat, Mar 11, 2017 at 06:03:30PM -0800, Rodrigo Damazio
Bovendorp via Mercurial-devel wrote:
> # HG changeset patch
> # User Rodrigo Damazio <rdama...@google.com
<mailto:rdama...@google.com>>
> # Date 1489274373 28800
> # Sat Mar 11 15:19:33 2017 -0800 <tel:33%202017%20-0800>
> # Node ID 8c833b81a994e2d3304c3b06793f536355528aab
> # Parent 62939e0148f170b67ca8c7374f36c413b67fd387
> fancyopts: making config defaults actually override defaults
>
Overall this LGTM, and clearly makes defaults much better :). My
concern
is that we are encouraging the use of defaults again, while they are
deprecated. Defaults have inherent problems that they overwrite
arguments
which might be mutable exclusive with others (e.g. --graph in incoming
and outgoing), or lead to undesired behavior if it's set by an
admin. an exmaple
is if you would specifiy defaults.update.check=True, the user will
not find an
--no-check option in the help message or anywhere else. This is
not a problem if
we assume defaults are alway set by the user and he knows about them.
Thanks for the review.
Yes, we discussed the update --check case specifically during Sprint:
https://public.etherpad-mozilla.org/p/sprint-hg4.2
(search for "Flags and defaults breakout")
Note that I copied the notes over the the wiki for posterity:
https://www.mercurial-scm.org/wiki/4.2sprint/Notes
If people do some cleanup passes and categorization, that would be
useful. I may contribute here at some point as well.
The conclusion was that this gains us the ability to do proper
single-flag overrides, which is good, but doesn't solve all the
issues. There are other changes we also want to make flags and
defaults useful again:
- make the passed-in flag values not be simple primitive types, but
rather enhance them with addition information about where the value is
coming from, so commands like update can decide that an explicit
--clean overrides a system default of --check, and should only fail if
both come from the same level
- we want to add a --no- counterflag for every flag, not just
booleans, as a way to unset it (useful for revision-specifying flags
for instance)
- we want to add environment variables to the stack of overrides along
with the different levels of config files and command-line arguments
- we want to try making all positional arguments map to flags (e.g.
"hg update 123" would be equivalent to "hg update -r 123" by making
123 be passed to the command as the -r flag, also allowing config
overrides for those)
- we want to investigate why we support callables in flag defaults,
and remove support if that's not useful to anyone
While I like this initial direction, I think this needs to be turned
into a series of smaller steps, and we need more discussion around
whether we will revive the defaults section or keep it deprecated. I'll
drop this from patchwork for now while we discuss.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel