[darcs-users] Files supplied to the external merge command are missing a line of code

Netocrat netocrat at dodo.com.au
Sun Oct 9 19:01:58 UTC 2005


David Roundy wrote:
> On Sun, Oct 09, 2005 at 09:05:09AM +1100, Netocrat wrote:
[on pulling patches with unresolved conflicts using --external-merge]
>>In the "cherry-picking" development style darcs allows, this situation 
>>seems to have a reasonably high chance of occurring.  One possibility as 
>>demonstrated here, is that the external merge handler will be lacking 
>>information available through the internal merge handling.  Do you agree 
>>that this is at a minimum undesirable?  The potential for loss of 
>>information is not described anywhere that I could find in the darcs 
>>documentation.
> 
> This scenario will never show up if everyone who creates a conflict
> resolves it, and if you always pull the resolution along with the
> conflicting patch.  Perhaps an option to disallow pulling of unresolved
> self-conflicting patches would be nice, sort of the pull version of the
> safety we already have with pushes (where you by default can't do a push
> that would lead to a conflict).

I would welcome that option, especially if it were the default when 
doing an external merge.  Alternatively a warning requiring confirmation 
  from the user to continue could be presented when externally-merging a 
file with unresolved remote conflicts (the prompt could allow the user 
to switch to internal merge functionality for that particular file). 
This warning/confirmation prompt could be default behaviour suppressable 
through an option.

In the meantime, I've added this paragraph to the wiki on the 
BestPractices page under the heading "Avoiding Trouble" with the 
sub-heading "Avoid external merges when pulling unresolved conflicts":

"Avoid using --external-merge when pulling patches containing unresolved 
conflicts from a repository since information may be lost in this 
scenario.  The existing conflicts in the remote repository will not be 
passed to the external merge tool since doing this at the same time as 
passing conflicts with the local repository is either impossible or too 
complicated.  Instead the version of the file from the remote repository 
will be passed to the external merge tool in its pre-conflict state."

http://darcs.net/DarcsWiki/BestPractices#head-e4ed07490d3348c273261848b532305552bc06fe

>>Is it possible to propagate existing conflicts in the remote repository 
>>to the external merge command whilst simultaneously dealing with 
>>conflicts with the local version?
> 
> Most external merge commands can't support more than a two-way merge, so in
> general no.

I had in mind doing some preparatory merging before sending to the 
external merge command, but even if this were possible in all 
situations, it's more complication than the above solution.

>>I'm trying to wrap my head around the issues but not being intimate with 
>>darcs is a hindrance.  My perspective though is: I can't trust the 
>>external merge command to display information as completely as the 
>>internal merge functionality, and that makes it much less useful to me, 
>>if not dangerous.
> 
> There are many issues with darcs' conflict handling, and this is the least
> of them.  When the conflict handling is rewritten (which is underway) all
> of these things will change.

OK so for now, I'll just avoid pulling patches with unresolved conflicts 
whilst using external merging.

-- 
http://members.dodo.com.au/~netocrat




More information about the darcs-users mailing list