We had a repository that grew to about 1.5 gig on github recently (due to hundreds of copies of SWF binaries). Neither git nor github even hinted at having any issues with large repos.
I'm down-modding the above because it sounds like FUD. Git has no issues with large repos as far as i'm aware, and based on my own experience.
We had a repository that grew to about 1.5 gig on github recently (due to hundreds of copies of SWF binaries)...
I'm guessing that you have a fairly large average file size here, so your 1.5GB Git repository contains far fewer files than FreeBSD's 1.8GB CVS repository.
That said, the strongest evidence that Git can't handle a project the size of FreeBSD comes from Linus himself in a discussion last year about KDE: '"Quite frankly, the way git works (tracking whole trees at a time, never single files), that ends up being very painful, because it's an "all or nothing" approach.' Linus' answer was that KDE should split up their repository into lots of small git repositories; that's not an option for FreeBSD.
If Linus himself doesn't think that Git works well for a unified project the size of FreeBSD or KDE, who are we to argue? :-)
That sounds reasonable, even to a Subversion-hater like me.
That said, I just took a quick look at the web-based CVS browser for the FreeBSD source repository, and I wonder if splitting the project up into a few smaller should have been considered more carefully? For example, ports go into one repository, the kernel goes in another, documentation into a third, and so on.
I'm not a FreeBSD guy, so it's easy for me to make outrageous claims, but I just wonder if inertia was in play here. Reorganizing the source repository to perhaps clarify it and also take advantage of everything git (or Mercurial, for that matter) has to offer, might have made sense. CVSup and the related toolchain will probably need substantial changes to support anything which isn't CVS anyway. In any case, could you give some supporting evidence for your statement that splitting up the repository is not an option for FreeBSD?
For example, ports go into one repository, the kernel goes in another, documentation into a third, and so on.
In fact, that's almost what FreeBSD has done for years. Until recently, there were separate src, ports, doc, www, and projects CVS repositories; the only change now is that the src repository is SVN -- the others are still CVS. As for why the kernel isn't a separate repository: FreeBSD, unlike linux, considers the kernel to be an integral part of a larger whole -- not a completely separate entity. We find that developing the kernel alongside userland utilities and libraries is a very Good Thing.
CVSup and the related toolchain will probably need substantial changes to support anything which isn't CVS anyway.
Nope. All the commits to SVN-src are being replicated to CVS-src (and will be for years to come) -- SVN is basically being used as a new way of doing CVS commits.
"If Linus himself doesn't think that Git works well for a unified project the size of FreeBSD or KDE, who are we to argue?"
Sure is a big departure from that git presentation he gave at Google were he was basically saying anyone who doesn't use git is necessarily a clueless retard.
I watched it on google video and even then he admitted that large projects need to be split. Funny part is that Mercurial is int he same boat - they also do not allow partial checkouts.
Where I work we 80Gb trees (sans history, that is) and idea of everyone syncing the whole 80Gb on all of their machines quickly kills any discussions around alternative source controls.
I'm down-modding the above because it sounds like FUD. Git has no issues with large repos as far as i'm aware, and based on my own experience.