您的.svn 存储库是什么意思?
.svn 文件夹主要用于管理签出的版本,与您的存储库服务器的历史完全无关。
.svn 目录包含诸如客户端上的哪些文件已更改、谁进行了签出以及 URL 等信息。在 Subversion 1.7 之前的版本中,它甚至保留了检出目录的完整副本。这样,您可以在不与服务器对话的情况下进行比较来查看所做的更改。这意味着,如果您检出 100Mb 的文件,您的 .svn 目录也将有 100Mb 左右。
如果您谈论的是客户端,则只需签出您需要处理的 URL 部分。例如,假设您有这样的标准 Subversion 存储库设置:
http://%REPO_URL%/trunk
http://%REPO_URL%/tags
http://%REPO_URL%/branches
在trunk 下,您拥有所有项目:
http://%REPO_URL%/trunk/project_foo
http://%REPO_URL%/trunk/project_bar
http://%REPO_URL%/trunk/project_fubar
如果我只在project_foo 工作,我不必结帐http://%REPO_URL%/trunk。我当然不想签出http://%REPO_URL%,这将给我我的整个存储库,包括所有分支和标签完全签出。 (我见过这样做的人)。
Subversion 客户端不会检出整个存储库,而只是检出项目的单个版本。如果你检查你需要的东西,你可能有一个数百 TB 大小的存储库,但你的工作副本可能不会超过 1 GB。
我见过的一个问题是人们检查二进制代码——第三方库或编译代码。此代码不应成为您的存储库的一部分。如果您使用 Java,请使用 Maven、Gradle 或 Ant 和 Ivy 来管理这些第三方库和您自己的项目可能使用的构建对象。如果您使用 .NET,请使用 NuGet 执行相同操作。
Subversion 以 diff 格式存储文件。如果一个版本与另一个版本相差一行,则只有该行更改存储在 Subversion 中。尽管单个源更改可能是一行,但它可能会对构建的文件产生重大影响。二进制文件占用 Subversion 存储库 90% 以上的空间并不罕见。也就是说,一个大约 500 MB 大小的存储库会因为二进制文件而膨胀到 50 GB 以上。
更糟糕的是,二进制文件很快就会过时,而且 Subversion 没有简单的方法来删除过时的版本。此外,Subversion 中没有工具可以帮助您分析二进制文件。两个二进制版本之间的差异是没有意义的。除了构建和检查版本的人之外,作者没有任何关系——不一定是应该就任何问题联系的人(这是一种很好的表达方式责备)。
我希望这能回答您的问题。只签出你需要的东西,你的.svn 目录会小得多。不要在 Subversion 中存储二进制文件,您的 .svn 目录将不必引用它们。如果这些没有帮助,请查看sparse checkouts,它可以消除您不需要的跟踪文件。