Ian Bicking: the old part of his blog

Re: Distributed vs. Centralized Version Control

Ian,

The key point I see missing here is the fact that centralized development is a subset of what a distributed model can do. At Summersault we switched from CVS to darcs, but kept the centralized development model for the most part.

darcs offers us many benefits, including spontaneous branches, interactive commits and updates, a smart patch algebra, and working on private branches we need.

You can read my full write up of our switch from CVS to darcs.

For open source work I also use darcs. We start of using 'darcs send' to exchange patches by e-mail, which works great. For small projects my website works as a central public repo for read only access, and I filter commits through my e-mail.

For larger projects, we can set of a central server for darcs (which is just copying files a web server), and give a group of comitters ssh access to commit there, while others contribute by e-mail.

I use svn for one project and am definitely slowed down because it doesn't offer interactive commits, updates or easy cherrypicking of patches.

Try darcs.

Mark

Comment on Distributed vs. Centralized Version Control
by Mark Stosberg

Comments:

The key point I see missing here is the fact that centralized development is a subset of what a distributed model can do.

I think there's a good possibility that one of the distributed systems will focus on making centralized development work well. I don't think they've done that yet. They are ignoring something important as a result. Since there's so much competition at the moment hopefully someone will try to differentiate in this way. I can even imagine a centralized fork; just like svk is like fork of svn, the opposite might happen. At least, I hope it does -- I personally am not tied to Subversion.

For larger projects, we can set of a central server for darcs

I think that should be the first thing to happen for a new project. Personally I "set up" a central server for all of my projects now, because I happen to have an svn repository at my disposal. Keeping 1 project or 100 projects in one svn server isn't substantially more difficult. Managing permissions is a pain... but eh. Easier than ssh accounts at least. I'm also generally fine giving people access based on informal agreements about permission.

I use svn for one project and am definitely slowed down because it doesn't offer interactive commits, updates or easy cherrypicking of patches.

I don't think these are problems with centralized servers. There's hard problems to be solved, and it's clear the new batch of version control systems is addressing many of those problems better than Subversion has. (And it's not surprising they are doing it with high-level languages.) Subversion hooks have a tremendous amount of potential, though, and I'd hate to lose that feature.

# Ian Bicking

"I think there's a good possibility that one of the distributed systems will focus on making centralized development work well."

For darcs, there's the "darcshive" centralized server project:

http://darcs.net/DarcsWiki/RelatedSoftware

# Matt Brubeck

Thanks for the response, Ian.

I think there's a good possibility that one of the distributed systems will focus on making centralized development work well. I don't think they've done that yet. They are ignoring something important as a result.

Working with a centralized server is arguably easier with darcs than svn.

Svn recommends you think about your branches, tags, and overall layout when you create the project. There is no need for this in darcs.

Svn has a special command, 'svn import' for starting a project. darcs has a syntax that is as easy to use, but more general purpose, as it can be used whenever you want to creat a new branch:

darcs put mark@otherserver.com:/home/repos/my_new_project

There is nothing special to learn about users and permissions, as you can use unix permissions and ssh, or gpg-signed e-mail to transport patches.

It's not clear to this to me why this wouldn't be considered "working well". It has the added benefit that casual contributors can still commit repeatedly offline on their laptops before sync'ing, or easily create their own branch.

 Mark

# Mark Stosberg

good

# 网页目录

As far as I can tell darcs cannot be run on anything but i386 and amd64. Most of the servers where I work are Linux or BSD running on sparc64.

# Eric Radman

I'm running it under Mac OSX, so I don't think you're necessarily correct there.

# Andy Todd