This has had surprisingly little conversation, so:

Jean-Philippe, Anders & Petter wrote:
> There should be no conflicting patches!

I don't believe that this is true. Conflicts (and dependencies) are a
useful part of this sort of version control system, IMHO. The
approximation that a patch that touches a line depends on or conflicts
with others that touch the same line is quite often true and is useful
for the user to be informed of. In my experience, it has offered a
reasonable approximation of the actual dependencies between two
patches.

There are situations in which it the dependency/conflict is
unsuitable, of course, and some of these could be corrected. One of
the primary examples is that of an indentation or other
non-meaning-changing whitespace alteration. I occasionally find myself
intentionally leaving some code incorrectly indented, in order to not
cause artificial dependencies. However, I feel that the answer to this
would be to introduce an indentation/whitespace patch type. Other,
similar problems have similar answers.

The problems Darcs has with conflicts are unlikely to be due to the
decision that patches can conflict or depend on each other; it is more
likely that the way Darcs handles conflicts is insufficient.

> all patches commute.

Why should all patches commute, if the external representation still
has the same conflicts as the current Darcs representation? Further,
if you do have missing patches, I believe you can no longer present
the user with a reasonable view of the changes. For example, if the
user pulls a patch that changes a line from "a" to "b" and another
that changes the same line from "c" to "d", what could they be told or
do?

> As part of a master-level project, two students of mine have implemented
> this idea in a prototype [1], and the report can be found here [2].

The report was quite interesting and quite clearly explained why other
version control systems have trouble with merges that are trivial
under the new system and Darcs. However, it did not seem to present
real world examples of the effects of the new patch representation.
For example, is the user warned when they try to combine a patch from
a file with lines (a,e) to a file with lines (a,c,e) with a patch that
goes from (a,e) to (a,n,t,e)? It is a intuitively a conflict, but my
impression is that the conflict-free RCS will give a file with lines
(a,n,c,t,e), without warning.

Regards,
Grant Husbands.
_______________________________________________
darcs-users mailing list
darcs-users@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to