On Fri, 30 Jan 2009, Lars Marowsky-Bree wrote:
We wouldn't be able to use git directly (handling the binary blobs like tarballs would inhibit all size optimizations that git tries to do with deltas).
I think both git and mercurial can handle binary files "efficiently" enough.
I don't think so, but I haven't tried. The reason why I don't think so (for git, I don't know mercurial) lies in the delta packing of blobs. In base git all blobs are their own files, hence binary files correspond one to one with (packed) binary blobs in the repo. That indeed is just fine.
But delta-packing tries to pack "similar" files together (similar being heuristically defined, based on filename, size, parent directory and so on), storing all the deltas in only a few files. That works for unpacked clear-text files, but not at all for compressed binary stuff. Essentially the deltas will be all-in-all-out diffs. I presume git will detect this and not store the delta, but simply the new file, but still there's a non-trivial cost in calculating (and disregarding) such deltas.
What's actually even worse is that all those files are stored in the repo itself. So, while storing all text files (.spec, .changes, .diff and so on) for all packages in git, since the dawn of time, probably produces a git repo of reasonable size for everyone to have local, including the tarballs would be prohibitive.
This all of course doesn't mean that using something on top of a usual VCS wouldn't have been better.