如何从SVN仓库中删除所有的二进制文件,以减less它的大小?

我们希望通过清除所有二进制文件(通常不是面向开发的zip文件)来减小存储库的大小。 任何简单的方法来删除它们?

我假设你想降低库的大小[在服务器上],而不仅仅是内容签出。

据我所知只有从svn永久删除的方法是:

  1. 运行存储库的转储
  2. 从转储中手动删除不需要的文件/对这些文件的更改
  3. 重新创build存储库

以这种方式你将保存历史和所有的元数据,但你会摆脱不需要的文件[如二进制文件]。

很不幸的是,不行。

目前还没有简单的方法从SVN仓库中完全删除文件。 自2001年以来,这个function(通常被称为“ 删除” )已被要求,但尚未实施。 查看错误报告的所有细节。

目前的解决方法是转储存储库,筛选转储,然后重新导入。 这在标准的书籍 Subversion版本控制中有所解释 。

防止用户检入你不想要的文件的最好方法是使用pre-commit钩子。 如果提交中的任何文件与模式匹配,则拒绝(即返回非0值)。 用户在尝试提交时将收到消息。 你可以设置全局忽略,但只适用于客户端,如果客户端没有设置忽略安装,他们将乐意尝试检查他们喜欢什么。

例如。 (使用Windowsbatch file,你会更好的用Perl)来限制特定的文件扩展名,并返回错误的文件与消息给用户:

@echo off svnlook log -t "%2" "%1" | d:\tools\grep -c "[a-zA-z0-9]" > nul if %ERRORLEVEL% NEQ 1 goto DISALLOWED echo Please enter a check-in comment 1>&2 exit 1 :DISALLOWED svnlook changed -t %2 %1 > c:\temp\pre-commit.txt rem ** remember to set the TruncatedExtensions registry setting to 0 ** rem ** or .resx will be matched as if it was .res ** findstr /G:"%1\hooks\ignore-matches.txt" c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt if %ERRORLEVEL% NEQ 0 exit /b 0 echo disallowed file extension >> c:\temp\precommit-bad.txt type c:\temp\precommit-bad.txt 1>&2 exit 1 

其中ignore-matches.txt是:

 ^[^D].*\.aps$ ^[^D].*\.vbw$ ^[^D].*\.obj$ ^[^D].*\.ncb$ ^[^D].*\.plg$ ^[^D].*\.bsc$ ^[^D].*\.ilk$ ^[^D].*\.exp$ ^[^D].*\.sbr$ ^[^D].*\.opt$ ^[^D].*\.pdb$ ^[^D].*\.idb$ ^[^D].*\.pch$ ^[^D].*\.res$ ^[^D].*\.suo$ ^[^D].*\..*scc$ ^[^D].*\\Debug ^[^D].*\.user$ 

您还可以通过忽略它们来阻止用户添加二进制文件,您必须编辑〜/ .subversion / config并查找全局忽略。 如果该行被评论,请删除磅字符。

 global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store ._* *.log *.bak 

所以你可以添加你想要的,我用它来保持我的仓库从Mac OS临时文件清理。

希望能帮到你。