Svn 在subversion中将同一文件合并到分支时,是否会占用服务器上的空间

Svn 在subversion中将同一文件合并到分支时,是否会占用服务器上的空间,svn,Svn,假设我在subversion分支上,合并来自主干的更改。它对我的分支应用20 Mb的更改,这些更改来自主干上的更改。让我们假设这些文件从未在我的分支上被我修改过,所以它们与主干相同 然后我按分支提交,我看到它将更改发送到subversion服务器(我使用的是TortoiseSVN) 这是否会向我的分支上的服务器添加20Mb的数据,或者服务器是否会检测到我提交的新文件与主干上的文件相同,并且只在我的分支上保留对主干上文件的引用,因此,保留服务器上的磁盘空间?当您在repo中执行svn复制时,Sub

假设我在subversion分支上,合并来自主干的更改。它对我的分支应用20 Mb的更改,这些更改来自主干上的更改。让我们假设这些文件从未在我的分支上被我修改过,所以它们与主干相同

然后我按分支提交,我看到它将更改发送到subversion服务器(我使用的是TortoiseSVN)


这是否会向我的分支上的服务器添加20Mb的数据,或者服务器是否会检测到我提交的新文件与主干上的文件相同,并且只在我的分支上保留对主干上文件的引用,因此,保留服务器上的磁盘空间?

当您在repo中执行
svn复制时,Subversion不会复制数据。但在其他情况下(如您这里的问题中),如果多次提交相同的文件内容,可能会复制存储库中的数据。答案取决于存储库是否支持表示共享

1.6.0向FSFS文件系统添加了表示共享。只要存储库是FSFS format 4(请参阅存储库下的
db/format
文件的第一行),并且Subversion服务器的版本至少为1.6.0,那么它就可以支持表示共享。但是,可以在
db/fsfs.conf
文件中禁用表示共享(默认为打开)。请参阅该配置文件的
[rep sharing]
部分下的
启用rep sharing
选项

使用表示共享,Subversion将跟踪文件内容的哈希映射到我们用于在存储库中存储数据的表示。在提交期间,将检查内容,以查看存储库中是否已经存在匹配的哈希,在这种情况下,将使用现有表示。如果没有,则会创建一个新表示并将其添加到地图中。您将在存储库下的SQLite数据库文件
db/rep cache.db
中找到此映射

为了避免再次存储数据,在提交相同数据的上一个副本时,需要启用rep共享,否则它将不在rep-cache.db中。因此,如果您有一个已升级的旧存储库,答案也可能取决于rep-cache.db中是否存在以前数据的提交

如果要确保所有内容都在rep-cache.db中,最好的方法是使用Subversion 1.6.0或更高版本执行转储/加载循环。

AFAIK不应再次添加文件,除非对其进行了修改。即使这样,也只应添加增量,除非文件被标记为二进制文件。但您可以自己轻松地测试:创建一个新的存储库,将几个大文件导入“主干”,创建一个“分支”,然后开始复制。经过这些步骤后,存储库的大小是多少?