[darcs-users] *practical* differences between darcs' patch model and git/mercurial's?

Adam Megacz megacz at cs.berkeley.edu
Sun Oct 21 07:46:34 UTC 2007

I'm aware that darcs' theory of patches is completely different from
the "ingrown tree" model that git and mercurial use.  But does this
huge theoretical difference translate to any real difference in

As far as I can tell, most user-visible differences should arise from
the fact that non-conflicting merges are invisible in darcs, but
explicit in git/mercurial.  That is, if I pull two patches from
uncoordinated sources, and they do not conflict, darcs will not add
any additional information to the repository; with git or mercurial,
even a "passive" developer who pulls these two patches will need to
add an additional content-free patch to merge them.

I suppose this might matter if you have multiple developers performing
identical nonconflicting merges independently.  In a situation like
that, having each developer generating their own merge-patches could
be bad, because then locally generated patches would seem to have
different histories (ie include different mergers) when in fact the
set of nontrivial patches in the history of each local change is

Is this understanding correct?

Unfortunately, it seems like the case where the theory of patches
offers an advantage happens to be precisely the case where darcs falls
over because of exponential time problems.  So perhaps there's
actually no difference in practice.

  - a

PGP/GPG: 5C9F F366 C9CF 2145 E770  B1B8 EFB1 462D A146 C380

More information about the darcs-users mailing list