Which brings to mind that there's some interest in
distributed version
control systems, which should be better for maintaining and publishing
individual work branches than SVN.
SVN's good at making release branches, but performing multiple merges
like one needs to do on a work branch is a big hassle, and notoriously
slow. I know some people are really excited about git, though there are
a number of others popular ones out there.
Git could be interesting, although in practical terms the cross-platform-ness
doesn't look like it's there yet (see section below).
Background info on git, if it helps anyone else:
Git <--> SVN crash course:
http://git.or.cz/course/svn.html
70 minute video of Torvalds talking about git (yes, I know 70 mins is a long
time, but he explains the distributed development idea quite well between
roughly 13:00 and 30:00) :
http://www.youtube.com/watch?v=4XpnKHJAok8
Getting started with git:
http://lwn.net/Articles/245678/
Advantages:
* No more worries about who has commit access
* No mucking about with SSH keys (?)
* No single point of failure (?)
* Easier merging of branches, with encourages more experimentation and
collaboration with branches. I'm not totally convinced that branches & merges
work especially well in MediaWiki's SVN (e.g. most commonly, branches tend to
be one person working on a branch, making their changes in public instead of
in private, and then most often that branch dies a slow death, but very
occasionally the changes get merged back, which as a practical consequence I
suspect means most people end up making changes in the main tree rather than
working in branches).
Questions:
* Would we get emailed logs of the commits to the "main" repository? (I'm
defining
"main" as the code that runs on the cluster, and which gets used for the
releases)
* What happens with the extensions? If the extension developers have the latest
version in their trees, do users of those extensions need to go and grab them
from each author of those extensions? Or does the "main" repository
maintainer
have to pull from the extension writers every time they update their extension?
Or can there be a redirect that's transparent to the user that fetches that
extension from a different tree?
Having something that's fairly usable on Linux,
Windows, and Mac OS X is
a pretty strong requirement for us to start poking in that direction.
And it looks like this would be the biggest problem with git :
* On OSX, looks like it has to be compiled (yuck) :
http://www.dekorte.com/blog/blog.cgi?do=item&id=2539
* And on Windows, it looks like it's being ported currently:
http://en.wikipedia.org/wiki/Git_(software)#Portability
* And of course it works fine on Linux, surprise surprise.
-- All the best,
Nick.