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.