1. 21
  1.  

  2. 4

    I guess I’m confused. The promise here is that you won’t need to deal with merge conflicts if you use a VCS based on patch theory. However, almost the first thing the author does in this article is resolve merge conflicts. To me, it doesn’t really matter much that internally it’s not really a merge conflict but one of these digle things. From a UX perspective, I don’t really see the difference. Can anyone help me out?

    1. 3

      Check these out:

      The video is about yet another VCS called Camp, but it applies to Darcs and Pijul.

      1. 2

        This is all internal to the VCS, the user still needs to produce a text file with a strictly linear ordering that is valid.

        This simplifies the design of the VCS as there is no point where the user must be asked to create a “valid” state of the repo to represent, the digles mean the VCS never needs to ask the user to “resolve” the state of the repo.

        It doesn’t do much, if anything, to the day-to-day use of the VCS for the user, as most merge conflicts occur not because the state of the file is unrepresentable, but because the users made changes that are logically incompatible with each other.

        1. 1

          the state of the file is unrepresentable,

          When do conflicts like that happen in other VCS? Can you give an example?

          1. 1

            Take this snippet as an example:

            int foo(int arg1, char arg2);
            

            Charly and Lana fetch the code on their computer. Lana renames “foo” to “bar”, and push her code on the server.

            In the meantime, Charly, during his trip to italy, renames it to “baz” and commit the change locally in the plane. He then arrives to the hotel, get a network acces the pull the changes. He gets a merge conflict because this funxtion cannot be named “bar” and “baz” at the same time. As both changes affect the same line, the file cannot be represented entirely.

            1. 3

              Is what you describe not the case where users made changes that are logically incompatible with each other?