[darcs-users] dvcs article

Matthias Andree matthias.andree at gmx.de
Mon Feb 2 10:27:38 UTC 2009


zooko schrieb:
> On Jan 24, 2009, at 8:41 AM, Tommy Pettersson wrote:
>
>   
>> Darcs (and SVK) are "not recommended", because the alternatives can  
>> all handle large repos, whereas darcs can not
>>     
>
> Sounds like a reasonable recommendation.  I would be interested in  
> having some automated generation of graphs of darcs performance and  
> scalability, generated by the buildbot.
>
>   
>> The article also describes darcs' repo-is-a-branch-is-a-repo as  
>> inflexible compared to the competitors. This puzzles me, because I  
>> find this freedom *extremely* flexible. But I have not used any of  
>> the other systems, so I don't know what I'm missing out on.
>>     
>
> Yes, this is a common criticism of darcs.  I can't tell whether there  
> is really some advantage to the way other dvcs's have separate  
> notions of branches and of repos, or whether the users of those  
> systems are mistakenly thinking that darcs's branch==repo causes some  
> problems that it doesn't.
>   
The point is that Mercurial and Git can of course support DARCS's model.
You can clone and use shared repos if you want the branch == repo model.
The notable difference is that Git stores patch ancestry and
"cherry-picking" (Git) a patch or "transplanting" (Mercurial) is not the
same as DARCS's commutable patches.
The advantage in Git (apparently also in Mercurial, but I really don't
know that too well) is that with local branches you only have one repo
copy, and you can switch between branches fast. And I mean really fast.
I'd probably use the clone-for-branch approach if I wanted two separate
working trees, and local branches otherwise.
Conventionally, Mercurial seems a bit closer to DARCS's model in that it
has apparently not encouraged local branches as strongly as Git has, but
that's not a technical reason AFAICT, but just common use of lead
developers/supporters.

Git really just stores (1) file contents, (2) trees of files, (3)
commits to group them and keep the ancestry, and names them after their
SHA1 hash. Branches or tags are just references to SHA1 hashes.


More information about the darcs-users mailing list