Hello Brion,
Brion Vibber wrote:
The SVN server was updated to 1.5 a while ago, which is apparently a little handier at branch merging, but branching still is kind of awkward in SVN.
That is probably not branching that you meant, but merge tracking.
There have been reasonable merge tracking support available for a long time for Subversion, either through the svnmerge.{sh,py} utility (that is distributed along with Subversion itself, since 1.2) or through SVK (both existed since before Git)... and *nobody cared*! People either branched and merged anyways, like described in svnbook (until 1.5), or a few looked for these handier tools when they needed.
Then, Torvalds did that presentation, and for some reason now everyone is scared of branching in Subversion... go figure.
Subversion 1.5 incorporates good branching support (not great, or excellent... just good enough). This kind of branch you suggested is quite trivial to handle now in Svn 1.5. It is just a matter of giving another read to chapter 4 of svnbook:
http://svnbook.red-bean.com/en/1.5/svn.branchmerge.html
Any good recommendations on SVN-friendly DVCSs?
The most Subversion-friendly DVCS is SVK. It exists since before Subversion 1.0, and have been continuously evolving along with Subversion since then. It supports the same features that are unique to Subversion, like directory versioning and properties, and uses the same underlying repository, so, it plays really well with Subversion. Your local revisions are a perfect mirror of remote revisions (with the exception of revision numbers).
There is Git, which uses a different and conflicting model from Subversion. Git doesn't care about directories, properties and copy/move information, and this makes it easy for people to silently screw up your repository (properties that should be updated aren't, file references that should be placed aren't). Some of these problems can be partially avoided by threatening your co-developers if they don't use --find-copies-harder to git svn dcommit, others are simply disregarded because Git ignores it completely.
Bazaar has some so-so Subversion support, but also has other problems. Bazaar doesn't have the notion of a file copy, and also doesn't support all features that are unique to Subversion, so conversion is also lossy.
Mercurial has a few ways to communicate with Subversion, all of them still in development.
I know some folks use SVK or a GIT-SVN bridge for doing various local development, but how easy is it to share a development branch among multiple developers over time this way?
Git has a lot of mind-share, most from people who never cared about distributed development, then watched Torvalds presentation and now think that Git is the best tool for everything, just because "Linus said so". The fact that GNU arch, Monotone, Darcs and SVK were sitting around way before Git was planned is just a minor detail, most of these people will refuse to even consider testing the alternatives to check what they have to offer.
In this case, SVK has a clear advantage over Git, because you don't plan to convert the main repository away from Subversion yet.
In your use-case, you want public branches and private branches. The git-svn bridge is more intended to be used for a single developer dealing with a public Subversion repository, or with some extra work, a Git-based project to be exported to a read-only Subversion repository. It is not trivial to share Git branches among developers and still be able to use git-svn to commit any of these shared branches back to the central repository. Expect things to break.
In the case of the Special:Search redesign, it sounds like a public branch, so it makes sense to have this branch in the central repository. Then SVK can be used, since it understands Subversion branches and its own local branches. SVK merge tracking is still incompatible with Subversion 1.5 merge tracking, so it is a good idea to stick to a single tool for branch <-> trunk merges (private branch <-> public branch merges and other work are fine with either tool).
Also SVK mirroring is another strong point. It is way better than the scavenging that git-svn does through svn logs to find what and how to convert the repository. Do you remember that I asked you on IRC about providing an svn dump of the MediaWiki repository? SVK is able to use such a dump to bootstrap the mirroring process, making the initial repository clone *a lot* faster than git-svn.
This is all only while you want to keep the Subversion central repo. If you really want to go distributed, SVK would be inviable, and Git is probably not the best option.
Best regards, Juliano.