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

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

Reply via email to