What do you mean your .svn
repository?
That .svn
folder is mainly used to manage the checked out version and has absolutely nothing to do with the history of your repository server.
The .svn
directory contains information like what files on the client changed, who did the checkout, and the URL. In pre-1.7 versions of Subversion, it even kept a complete copy of the checked out directory. This way, you could do a diff to see the changes you made without talking to the server. That meant if you checked out 100Mb of files, your .svn
directory would be about 100Mb too.
If you're talking about the client, you only need to checkout the part of the URL that you need to work on. For example, let's say you have the standard Subversion repository setup like this:
http://%REPO_URL%/trunk
http://%REPO_URL%/tags
http://%REPO_URL%/branches
Under trunk
, you have all of your projects:
http://%REPO_URL%/trunk/project_foo
http://%REPO_URL%/trunk/project_bar
http://%REPO_URL%/trunk/project_fubar
I don't have to checkout http://%REPO_URL%/trunk
if I'm only working in project_foo
. I certainly don't want to checkout http://%REPO_URL%
which will give me my entire repository including all branches and tags fully checked out. (And I've seen people who had done this).
A Subversion client doesn't checkout the entire repository, but just a single version of the project. If you checkout what you need, you could have a repository that's hundreds of terabytes in size, but you're working copy probably isn't over a gigabyte in size.
One issue I've seen is people checking in binary code -- either third party libraries or compiled code. This code should not be part of your repository. If you use Java, use Maven, Gradle, or Ant with Ivy to manage these third party libraries and your own built objects that your project might use. If you use .NET, use NuGet to do the same.
Subversion stores files in a diff format. If one version differs from another by a single line, only that line change is stored in Subversion. Although that single source change might be a single line, it could have major repercussions in the built file. It isn't unusual for binary files to take up over 90% of space of a Subversion repository. That is, a repository that should be about 500 megabytes in size would swell to over 50 Gigabytes because of the binary files.
Even worse, binary files quickly become obsolete, and Subversion has no easy way of removing the obsolete version. Besides, there are no tools in Subversion that can help you analyze your binaries. Diffing between two binary versions is meaningless. The author has no relevance except that's who built and checked in the version -- not necessarily the person who should be contacted about any questions (which is a nice way of saying the blame).
I hope this answers your question. Checkout only what you need, and your .svn
directory will be that much smaller. Don't store binary files in Subversion, and your .svn
directory won't have to reference them. If these don't help, look into sparse checkouts which can eliminate tracking files you don't need.