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