David, Ian has kindly asked me about this example and I keep forgetting to talk it over with you.
Suppose you have 3 patches, A, B and C. A and B conflict and C depends on A. You merge A and B by choosing to cancel A in favor of B. Now you want to pull C into your repository. I was explaining it like thus: First you get X[](A)X[](B) Now you cancel A, so remerge brings B back to life. So then you have: X[](A) B (Cancel A) Now when you pull C, it depends on A, which is canceled. This part I'm unsure about. I've tried to define the important sets below. Definition: The set of active changes consists of those changes which either have not been canceled, or are depended upon by an active change. So here we have the set of active changes: { B (not canceled) , C (not canceled), A (depended upon by C) } Definition: The pristine state of the repository consists of the set of active changes that do not conflict with any other active changes. The pristine state of the repo: { C } Or should this be empty because C depends on A which has a conflict? Definition: When the pristine state differs from the set of active changes (i.e. the set of active changes cannot be commuted into a single linear sequence of changes), the repository is in a conflicted state. We have a conflicted state. Clarification would be appreciated. Thanks, Jason _______________________________________________ darcs-devel mailing list darcs-devel@darcs.net http://lists.osuosl.org/mailman/listinfo/darcs-devel