SVN with git. One package: git-svn; two tools:
git-svnimport, git-svn.
First thought: Oh, I don't need to modify things, let's use
git-svnimport. Bad guess. After some revisions fetched from
blender.org, the download gets stalled, and no way to resume. That's
documented in Debian bug #436930.
After having asked on #git/irc.freenode.net, it looks like
git-svnimport is quite unmaintained and that git-svn is the way to
go.
git-svn clone https://svn.blender.org/svnroot/bf-blender
Far better, but after 6000+ revisions, interrupted download, and impossible to resume it. Damn (but thinking about it, I might have used the wrong command). Another way to do that:
git-svn init https://svn.blender.org/svnroot/bf-blender
# Get 10 revisions
git-svn fetch -r BASE:10
# Get the rest
git-svn fetch -r BASE:HEAD
Using -r BASE:HEAD is quite interesting since only the needed
revisions are fetched.
Important: Don't forget to use git-svn and not git.
Now, two branches: master, local, and git-svn, remote. Go!
$ du -sh .git/
1.1G .git/
$ time git gc
real 67m14.503s
user 7m26.616s
sys 0m57.740s
$ du -sh .git/
221M .git/
And all the project's history is there! The branches, tags,
trunk are all available as directories, but it is also possible to
have them as remote branches, using the following options: -T trunk
-b branches -t tags.