I have a SVN repository that is 8 GB when I measure the folder size on
the server.
But when I check it out locally (simply checking out the full
repository from the root, all branches/tags) its 50+ GB (still
counting).
Do not checkout a working copy from the repository root unless you need to have all project branches, tags and shelves on your workstation. Normally you don't need such a working copy for daily work with SVN.
It seems that SVN does a good job at compressing its content. How come
the size is so different?
Branches, tags, shelves (and copy operations) do not take much space in the repository storage system in the server side. For example, a new branch in the repository should take minimum of space (several kilobytes). A branch or tag in SVN is a cheap copy. When you create a branch or tag, Subversion doesn't actually duplicate any data in the repository. Moreover, SVN repos use several other techniques to save the space.
However, a local working copy of the repo root on your workstation will contain all the branches as is and will take up much more space than in the repository.
And is there any way of computing the actual size of the repository
without having to do a full checkout locally?
Disk usage or size of my entire Subversion repository
Just check the size of the repositories on disk.
In case you use VisualSVN Server, try the Measure-SvnRepository cmdlet. It will produce the following output:
Name Revisions Size SizeOnDisk
---- --------- ---- ----------
MyRepo 498 3,340 KB 4,529 KB
MyRepo2 479 21,313 KB 22,571 KB
MyRepo3 201 1,032 KB 2,226 KB
MyRepo5 2 71 KB 90 KB
You can also view and examine the repository storage statistics with the svnfsfs stats tool. Here is an example:
svnfsfs stats C:\Repositories\MyRepository