Re: so long and thanks for all the darcs

Ben Franksen <[email protected]> Sun, 4 Mar 2018 12:16:13 +0100
Newsgroups gmane.comp.version-control.darcs.user
Message-ID <[email protected]>
Am 04.03.2018 um 05:03 schrieb Karl O. Pinc:
> On Sat, 3 Mar 2018 18:36:32 -0800
> Evan Laforge <[email protected]> wrote:
> 
>> On Sat, Mar 3, 2018 at 6:26 PM, Karl O. Pinc <[email protected]> wrote:
>>> This being so, I'm curious why a darcs user would choose
>>> git over mercurial.  
>>
>> Honestly, because I don't know mercurial.  I should fix that someday.
>> My impression is that it's like git but with a more sensible command
>> line interface, and has an elaborate plugin system with tons of
>> extensions (which nice in a way but scary in another way).
> 
> It's not that the command line interface is more sensible.  It's
> that the mental model of a repo with which the mercurial commands
> interact is simple.  _Almost_ as simple as darcs.  And almost
> the same as darcs.  I think the difference is that file name
> changes are essentially deletes and adds in mercurial.

There are much more fundamental differences in the model. Darcs is the
only tool I know of that can automatically re-order changes without
changing patch identities. Patches that don't depend on each other are
freely commuted whenever necessary or, in certain situations, at the
user's behest.

I agree with Evan that mercurial's UI is much more sensible than git's
and that their mental models are pretty similar. One thing that makes
git unnecessarily complicated to use IMO is the very loose coupling of
local and remote branches. I have never understood this design decision
and see absolutely no sensible use case for giving local branches a
different name than the remote ones or let the user change which local
branch is tracking which remote branch. Mercurial's main fault (IMO) is
that it does not support editing history natively. To do such
operations, one is forced to use low-level extensions like mq that
convert changes between revisions into dumb patch files (the stuff you
get with diff -u).

Cheers
Ben