[darcs-users] darcs patch: Resolve issue1588:make--dont-allow-conflicts filter ...

Sittampalam, Ganesh ganesh.sittampalam at credit-suisse.com
Wed Oct 7 17:29:35 UTC 2009

Dan Pascu wrote:
> On 5 Oct 2009, at 22:51, Ganesh Sittampalam wrote:
>>> If they are mutually exclusive, I assume that the program will
>>> decide what option to use before it starts to do anything. So if I
>>> have skip-conflicts in the defaults file but I give --dont-allow-
>>> conflicts on the command line, then indeed I expect that skip-
>>> conflicts (specified in the defaults) is completely suppressed and
>>> ignored.
>> Right, and I am saying that this behaviour, while straightforward to
>> implement, might be rather confusing.
> Here is where we view things differently. I find it straight forward
> to see them as mutually exclusive, because then I know that the last
> one specified is the one that has an effect. Otherwise I would have
> to keep in mind the relations between them as well as what options
> was set in every place (internal defaults, global and local defaults
> file and command line) and to mentally compute the result of their
> combination. This is hardly something I want to do or find it to be
> simple/intuitive.       

I've been thinking about this a bit more and I agree that tacking on an
orthogonal --skip-conflicts to the existing situation would be wrong.

Right now, we have the mutually exclusive set of options
--mark-conflicts, --allow-conflicts and --don't-allow-conflicts, and the
orthogonal option --external-merge, which can still affect the conflict
handling behaviour as I think you were complaining about previously.

I think that we should either make the entire set of options mutually
exclusive. Another possibility, which I have not worked out fully, is to
factor them into a hierarchy of orthogonal options where certain
settings further up the chain implicitly make some of the options lower
down the chain irrelevant, as suggested by Eric in a previous mail.

>>> I feel like I'm missing something here.
>> The problem is not with the implementation, but with the user
>> confusion that might result from the addition of --dont-allow-
>> conflicts causing conflicting patches to be offered in interactive
>> selection when they weren't previously.
> But this I do not understand. Why do you say that if I specify
> --dont- allow-conflicts on the command line and the options are
> mutually exclusive, so --dont-allow-conflicts actually wins and
> discards whatever else default is in the defaults file, still I get
> conflicting patches being offered?    

Because that's the current behaviour of --don't-allow-conflicts: it
offers you all the patches, and then fails if any turn out to conflict.

The main technical part of my work on --skip-conflicts was precisely to
add a pre-filtering step for the list of potential patches.


 Please access the attached hyperlink for an important electronic communications disclaimer: 

More information about the darcs-users mailing list