On 2 Oct 2009, at 15:33, Sittampalam, Ganesh wrote:

If that is so, I do not think it
would be the best choice. For example if I specify skip-conflicts in
the defaults file, but then I use --dont-allow-conflicts on the
command line, I expect the command line switch to take precedence
over whatever is specified in the defaults file, otherwise it will be
confusing.

I already reported a similar problem, where if I have mark-conflicts
in the defaults file but I use --dont-allow-conflicts on the command
line, the later is ignored; it may have been the other way around, I
don't remember exactly, however the point is that a command line
switch is ignored while the value from the defaults file is used,
which is confusing. The command line should always take precedence
over the defaults file. Also if multiple orthogonal switches are
specified on the command line, the usual practice is to use the last
one.

Did you mean to say "mutually exclusive" rather than "orthogonal" here?

Yes, I did. Sorry for the inaccuracy.


In my opinion, for mutually exclusive options, you're certainly right
about picking the last option specified (with defaults implicitly coming
before the command line).

However it's not completely obvious to me that --skip-conflicts really
is mutually exclusive with --don't-allow-conflicts. In particular, with
--don't-allow-conflicts but not --skip-conflicts, you'll get offered
every patch and then get a failure if any conflict. So if we accept your
argument, and you have --skip-conflicts as a default and then you
specify --don't-allow-conflicts on the command line, then suddenly
you'll get conflicting patches offered to you.

Why? Aren't the options selected (from global defaults, local defaults and command line) before any processing is started? I do not know the code, but I would expect that before any processing is done, the code has already determined what options will be applied.

My general feeling is
that --skip-conflicts may not be that useful as a default, and the more

It may not be useful, but you cannot stop someone from using it like that and then you still have to handle the situation in the code in order for the code to work in any possible case the user is allowed to create.

likely use cases are for the user to specify --mark-conflicts or
--don't-allow-conflicts in the defaults file, and then to override that
on the command line with --skip-conflicts.



OK, now I understand where you're coming from. However I do not agree with this point of view. A darcs user doesn't know about all these details and how the code is written and what dependencies are there in the process of filtering out some patches. Making these options not mutually-exclusive will make it very difficult for a user to remember all the relations between them, which has to come first, which affects which and how. Now even if he remembers that he would have to also remember what options he put where (global defaults, local defaults) and how they will combine with what he just typed on the command line. This can get out of hand fast.

IMO, these options should not mix with each other. The last one specified should take effect, the previous ones should be ignored. This would make the user interface much cleaner, simpler to use and remember.

I know that for a developer, these relations may be obvious or easy to remember, but it would simplify it a lot of end users if it would be restricted to a set of mutually exclusive options (which should be easy to do by just picking the last one specified).

--
Dan



_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to