Answers:
如Hubert所说,svnadmin pack
会将目录中的所有单个回购文件打包到一个大文件中。这将为您节省一些空间,但这只是推迟您一天的清算。(尽管这样可以使历史记录操作更快,因此无论如何都是一个很好的建议)。需要注意的一件事是,它仅适用于分片目录(即新目录结构是将1000个修订放入一个目录中,然后启动一个新目录),并且仅打包旧的分片目录,不适用于当前分片目录在里面。
因此,唯一的选择是从历史记录中删除旧修订。这需要svnadmin转储和加载,并可以选择使用过滤器删除不再需要的存储库中的目录。(例如旧的临时分支机构)。
转储很容易:svnadmin dump -r xxx:HEAD
xxx是您要保留的最旧修订版本(即xxx将转储最新修订版本,因此您的旧修订版本将被丢弃,例如存档)。您也可以通过转储旧版本来保留旧版本的存档(svnadmin dump -r 1:xxx
)
获得转储文件后,加载就像通过传递转储文件名运行svnadmin load一样容易。在加载新仓库之前删除旧仓库可能是一个好主意-然后,如果您还没有最新的服务器文件系统属性,则可以从中受益。
如果要保留所有旧版本,但要过滤掉某些目录,则需要通过svndumpfilter运行转储文件,这将删除指定的路径。请注意,您将不使用--incremental选项就进行转储。
显然,请在本地测试所有操作-转储到本地文件,然后将其加载到本地驱动器上的临时存储库中(这也会更快),并测试历史记录和最新版本是否正常-我将最新修订版本导出到目录并使用winmerge检查文件是否与实时回购中导出的最新修订版本相同。如果您想偏执,也可以尝试使用历史修订版。
该项目有计划...某天要实施svnadmin obliterate命令,该命令将完成永久删除信息的任务。
...
同时,您唯一的办法是svnadmin转储您的存储库,然后将转储文件通过svndumpfilter(不包括错误的路径)通过管道传输到svnadmin load命令中。
您不能不svnadmin dump; svndumpfilter; svnadmin load
跳舞就无法从SVN存储库中删除文件。你可以,如果你使用的是FSFS,只需运行降低库的大小svnadmin pack
在回购目录。