I believe this is why many people still use Subversion and Perforce, etc.
I believe this is why many people still use Subversion and Perforce, etc.
* Using a big repository for a bunch of related projects. Settings up a new project (not a new repository, but who can tell the difference?) is as simple as creating a new folder, then commiting it. Then you can directly checkout that folder if you need the single project. This beats SSH one-liners to set up new repositories.
* I usually have something like a "httpdocs"/"website" subfolder in my bigger projects. With svn, I just check out that folder on my web server. With git, I'd have to check out the whole project, which feels more like a kludge.
Want to checkout all Apache Software Foundation projects?
svn checkout http://svn.apache.org/repos/asf/
Want to work on Apache httpd? svn checkout http://svn.apache.org/repos/asf/httpd/
Maybe you only care about mod_proxy? svn checkout http://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/proxy/
Apache server becomes a subproject of the new Apache MegaOS? Just move /repos/asf/httpd/ to /repos/asf/megaos/httpd.See also FreeBSD repository: http://svnweb.freebsd.org/base/
Correction, that's all branches and all tags of all ASF projects. Not useful.
> Want to work on Apache httpd? > svn checkout http://svn.apache.org/repos/asf/httpd/
Again, all versions and all tags thereof.
> Maybe you only care about mod_proxy? > svn checkout http://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/pr...
That's just the one version.
Similarly, my project wants the latest sources under under specific branches from repositories from five different administrative domains. That's trivial in git. I can move them around freely, lock a revision of a particular repository while letting others move forward, have custom (potentially unpublished or unwelcome upstream) patches to fit into my build system or supported OSes that are tracked along with them.
Subversion has externals for this same reason. It's no excuse for poor repository management.
Yes, I should have used the FreeBSD repository as an example, which is not organized in {trunk,branch,tags} form.