caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: David Brown <caml-list@davidb.org>
To: Erik de Castro Lopo <ocaml-erikd@mega-nerd.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] [OT] Rant about VCS: Conclusions
Date: Tue, 21 Dec 2004 15:19:40 -0800	[thread overview]
Message-ID: <20041221231940.GA20770@old.davidb.org> (raw)
In-Reply-To: <20041222093627.5a5376a3.ocaml-erikd@mega-nerd.com>

On Wed, Dec 22, 2004 at 09:36:27AM +1100, Erik de Castro Lopo wrote:

> Arch OTOH keeps a log of all changesets applied to a tree. That 
> means that if you have three branches A, B and C, all with the same
> common ancestor you can merge A -> B and then B -> C. Now if you
> try to merge A -> C Arch is clever enough to figure out which
> changesets in A have already been applied to C and which ones 
> haven't, and then only apply the ones that have not been applied.

As far as I know, Arch and darcs are the only reasonably popular SCMs that
keep track of merge history sufficiently.  (I know nothing about BK, since
I'm not allowed to run it, it probably does track this correctly).  PRCS
was probably the first to popularize this level of tracking of changes.

It is a deeper issue than just knowing which changes to apply.  When you
have two active branches where changes propagate between them (common when
there are two active branches), a solution other than Arch, or darcs
quickly becomes unmanageable.  The solution with most other SCMs is to just
not do this, but it is a realistic scenario, especially when there are
specific "customers" for specific releases.

Darcs and Arch take very different approaches.  Arch approaches this from a
'patch' model, where it tries to find a common ancestor, and apply the
appropriate patches to this ancestor, allowing the patch program to try and
deal with the differences.

Darcs, instead, has the ability to mutate the patches themselves to be
applicable in different contexts.  It has the advantage of being completely
deterministic as far as conflict resolution.  It also has the problem that
in some instances, it just gives up, declaring that a patch cannot be
applied, rather than trying to do so and letting and edit of the conflict
take place.

The implementors Arch and Darcs seem to understand the complexity and
difficulty of cross branch merging, and embrace it head on.  Other
solutions tend to brush off the problem as not important, and generally
leave the user with some very tricky merge cases.

Perforce (commercial) attempts to track merge history, but does a terrible
job of it.

Aegis does seem to track merges well, although it can be obscure figuring
out what commands are needed to apply the merges.  I've also had problems
where it applied the merge correctly, and them completely undid the change
when 'resolving' the conflicts.

Dave


  reply	other threads:[~2004-12-21 23:19 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-17 17:07 [OT] Rant about VCS Alex Baretta
2004-12-17 18:42 ` [Caml-list] " Paul Snively
2004-12-17 19:28   ` Yaron Minsky
2004-12-17 20:13   ` Erik de Castro Lopo
2004-12-17 21:37 ` Sven Luther
2004-12-17 22:27   ` Erik de Castro Lopo
2004-12-18  9:28     ` Sven Luther
2004-12-18  9:49       ` Erik de Castro Lopo
2004-12-18 14:45         ` Sven Luther
2004-12-18 20:03           ` Erik de Castro Lopo
2004-12-18  9:52       ` Erik de Castro Lopo
2004-12-18 14:45         ` Sven Luther
2004-12-18 11:24       ` Richard Jones
2004-12-18 15:01         ` Sven Luther
2004-12-18 15:22           ` Richard W.M. Jones
2004-12-18 15:35             ` Richard W.M. Jones
2004-12-18 15:39             ` Sven Luther
2004-12-21  9:07     ` [Caml-list] [OT] Rant about VCS: Conclusions Alex Baretta
2004-12-21 22:03       ` Blair Zajac
2004-12-21 22:36         ` Erik de Castro Lopo
2004-12-21 23:19           ` David Brown [this message]
2004-12-21 23:47             ` Erik de Castro Lopo
2004-12-18  0:48 ` [Caml-list] [OT] Rant about VCS skaller
2004-12-18 11:25 ` henri dubois-ferriere
2004-12-18 15:03   ` Sven Luther

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20041221231940.GA20770@old.davidb.org \
    --to=caml-list@davidb.org \
    --cc=caml-list@yquem.inria.fr \
    --cc=ocaml-erikd@mega-nerd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).