[mnet-devel] Subversion vs DARCS (was: Moving sf.net CVS to cryptomonkey.net Subversion)

Sean E. Russell ser at germane-software.com
Mon Jul 7 15:23:03 BST 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Cross posting.  What fun.

Zooko said:
> Good to know!  I think Subversion is less stable than CVS, and that could
> give us problems, but it might be worth the risk of using Subversion instead
> of CVS in order to have convenience and security for the server admin.

This hasn't been my experience.  I've been using Subversion exclusively for 
two years; in that time I've had no data loss, and in the past year I haven't 
had any trouble with the server at all.  We're using Subversion on at least 
two projects I know of at Glaxo-Smith-Klein (a large pharmaceutical company).  
The databases are easy to back up, the database dumps are surprisingly 
compact (and compress really well), and we're very happy with the project.

That isn't to say that Subversion doesn't have limitations.  Repository access 
control granularity is, frankly, non-existant.  The potential of WebDAV as a 
transfer protocol is largely unrealized; until we have WebDAV 'post' commits, 
the use of WebDAV is largely irrelevant.

I see DARCS and Subversion as addressing two different problem spaces.  DARCS 
lends itself much more to a distributed development model, where there is no 
authoritative repository.  Subversion is much more centralized.  This makes 
DARCS more appropriate for open source projects, whereas Subversion is more 
appropriate for a corporate environment.  Subversion has a very clean design, 
with a short learning curve; in SVN, everything is a URL, and all operations 
boil down to copies, deletes, and updates.  This is very powerful when 
applied to tagging and branching.  DARCS has a much better patch-oriented 
paradigm, allowing change sets from different branches and from different 
repositories to be more easily merged.  Currently, SVN has no 
cross-repository merge support.  SVN commits are atomic, which is a very nice 
feature; I don't know what happens to a DARCS repository if a changeset 
import or commit fails.  SVN scales well for large projects; DARCS may not.  
DARCS has granular access control, based on PKI; SVN relies on Apache for 
access control, and it is insufficient to provide granularity.

They both have their advantages for particular jobs.  I do like DARCS 
distributed model, and the patch oriented change management.  DARCS also has 
a better access control model.  I prefer Subversion's usage design, and the 
potential to use WebDAV as a commit interface.  The stability of DARCS, as 
compared to Subversion, is up for debate, but from my experience, Subversion 
is more stable than DARCS.

> I don't think this would be a problem.  Real merge conflicts are rare, and 

Hm.  In your project, or in general?  On a 4 person team of developers in a 
project at GSK, we get commit conflicts weekly, and the number of merge 
conflicts rises geometrically the longer branches go unmerged.

I agree that conflicts aren't a big deal, though.  We consider commit 
conflicts to be opportunities for communication :-)  However, this is a weak 
point in the commit-via-email architecture, and it would be nice to have this 
addressed.

> Hm.  That's a good point.  It would be a bit tedious, and people who wanted
> to 

We haven't found branch merges in Subversion to be difficult at all, once they 
are understood.  The problem we find is in getting people to learn which 
deltas to merge from.  The key is to merge using the diffs between the 
current branch revision and the revision at the point *where* it branched, 
into the branch where you want the changes.  For example, given:

	0	->	1	->	3	->	5
			|
			v
			2	->	4

merging from 4 to 5 you'd want -r 2:4 into a WC containing 5.  Most people try 
to merge 5:4 into 5, or something like that, the first time.

Your example:

> For example, suppose that you were working on branch_twisted while I was 
> working on branch_ent, neither of which was the HEAD branch.
> 
> Now suppose that I want to get the current Twisted integration merged onto 
> branch_ent, but you do *not* want the current ent hackery merged onto 
> branch_twisted.  

is easily solved.  You check out branch_ent, then merge the diff from 
branch_twisted from where it deviated from branch_ent (they must share some 
common ancestor) into that checked-out working copy.  If you commit the 
merge, only branch_ent will be affected.

Again, there must be some common ancestor for this to work, but Subversion 
does not allow cross-repository merges, so the constraint is already a given.  
If you're going to criticize Subversion's merging capabilities, this 
limitation would be much more concrete.

> Bottom line: DARCS promises some delicious features that no other Free 
> Software revision control system has even conceived of, as far as I am 
> aware [3].  However, I haven't tried it yet, and there could well be hassles 
> of administration, UI, or stability that would render it unusable.  I want
> to find out.

DARCS appears to my amateur eye to be very similar to arch.  I'm not aware of 
any significant architectural differences, although DARCS appears to have 
more features, and has a better implementation. 

- -- 
### SER   Deutsch|Esperanto|Francaise|Linux|Java|Ruby|Aikido|Dirigibles ###
### http://www.germane-software.com/~ser  jabber.com:ser  ICQ:83578737  ###
### GPG: http://www.germane-software.com/~ser/Security/ser_public.gpg   ###
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE/CYJHP0KxygnleI8RAkUgAKCECb0MYHBrkg3sS4ZWl8YKSIa8OgCguZUT
Es1i/YPgElxewdrJBxdRUaE=
=ujbF
-----END PGP SIGNATURE-----



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_______________________________________________
mnet-devel mailing list
mnet-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mnet-devel




More information about the Mnet-devel mailing list