Subject: Re: [VOTE] git versus mercurial (for DragonflyBSD)

From: David Soria Parra <[email-masked]>
Date: Mon, 27 Oct 2008 12:42:42 +0100

Emanuele Aina schrieb:
> Jakub Narebski precisò:
> 
>>> What do you mean by "cleaner design"? 
>> Clean _underlying_ design. Git has very nice underlying model of graph
>> (DAG) of commits (revisions), and branches and tags as pointers to this
>> graph.
> 
> Just for reference, the abstract history model of Mercurial and GIT is
> the same, a DAG of changesets identified by their cryptographic hash as
> designed for Monotone, which can be considered the parent of both.
> 
> GIT and Mercurial then differs in how this abstract model is written to
> disk, with different tradeoffs in terms of performances and how easily a
> specific feature can be implemented, but there is no reason something
> can be done in GIT but not in Mercurial or viceversa.

Yes, it's the same: a DAG  with hashes. But there are limitations due to 
the implementation (and not the design). Just as a bad and completely 
useless example (don't start to argue, I know it's nothing someone would 
like to have): you cannot force mercurial to merge two revisions and 
create a merge commit if one is the others ancestor,which is possible in 
git with git --no-ff. In addition they differ in some other ways: 
Mercurial doesn't have an index to stage commits, which is something 
that git has and allows very powerful features (such as git add -i, etc).