1

我目前维护一个托管多个Subversion存储库的服务器。在另一台服务器上,我使用svnsync镜像生产存储库。镜像服务器上有 100 多个要同步的存储库,其中大多数在两个服务器上具有相同的大小(而不是磁盘上的大小)。

我担心的是,其中一些生产服务器和镜像服务器上的大小不同(其中一些差异为 100mb+)。

我对你们的问题是:这是否正常,为什么会发生?

一些额外的信息,以更好地了解我的情况:

  • 两台服务器都是 Windows Server 2003,
  • 生产服务器使用 Subversion 1.6.6,
  • 镜像服务器使用 Subversion 1.6.13,

我还运行了以下测试:

  1. 从生产和镜像(最新版本)中检查了一个损坏的存储库,并比较了它们的日志和大小,它们都是相同的。在这一点上,这并不是真正的结论,但至少它们似乎都在工作。

  2. 使用来自使用 Subversion 1.6.6 的服务器的 svnsync 命令检查同步存储库的大小,我得到的结果与使用 Subversion 1.6.13 从镜像服务器同步的结果相同。

  3. 比较存储库中的两种格式(使用 Subversion 1.6.6 在生产服务器上创建的格式和为 svnsync 命令创建的格式),它们都是相同的,使用 fsfs 4 布局 sharded 1000格式 5

谢谢您的帮助。

编辑:为清晰起见格式化。

4

1 回答 1

1

svnsync 的存储库有几种不同大小的方法。这些包括:

其中一个存储库可以使用 打包svnadmin pack,这可以极大地改变大小。

同步修订时,每个修订的未版本化修订属性都会被复制,但同步后,一个存储库上的修订属性可能会被修改/添加/删除。(100MB 听起来不太可能,但有可能。)

可以在一个 FSFS 存储库而不是另一个存储库上启用 Rep-sharing(请参阅 fsfs.conf)。Rep-sharing 可能会增加或减少存储库的大小,这取决于索引占用的空间是否大于共享保存的空间。

如果使用 Subversion 独占文件锁,这些会占用主存储库中的空间。它们不会被 svnsync 复制。有一个长期存在的错误导致锁在释放后占用空间,请参阅issue 3667

在磁盘上,存储库只是文件的目录树。可以将任意的非存储库文件放在存储库目录树中。任何此类文件都不会被 svnsync 复制。

于 2011-04-20T17:54:02.927 回答