例如。(使用 windows 批处理文件,使用 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
我假设你想减少存储库的大小[在服务器上],而不仅仅是签出的内容。
据我所知,从 svn 中永久删除某些内容的唯一方法是:
通过这种方式,您将保留历史记录和所有元数据,但您将摆脱不需要的文件 [例如二进制文件]。
抱歉不行。
目前没有简单的方法可以从 SVN 存储库中完全删除文件。此功能(通常称为obliterate)自 2001 年以来已被请求,但尚未实现。有关所有详细信息,请参阅 错误报告。
目前的解决方法是转储存储库,过滤转储,然后重新导入。这在标准书籍,带有 Subversion 的版本控制中进行了解释。
防止人们签入您不想要的文件的最佳方法是使用预提交挂钩。如果提交中的任何文件与模式匹配,则拒绝(即返回非 0 值)。用户在尝试提交时会收到消息。您可以设置全局忽略,但这仅适用于客户端,如果安装了客户端而没有设置忽略,他们会很乐意尝试签入他们喜欢的任何内容。
例如。(使用 windows 批处理文件,使用 perl 会更好)来限制特定的文件扩展名,并向用户返回带有消息的坏文件:
其中ignore-matches.txt 是:
您还可以通过忽略它们来阻止用户添加二进制文件,您必须编辑 ~/.subversion/config 并查找 global-ignores。如果该行被注释,请删除井号字符。
所以你可以添加你想要的东西,我用它来保持我的存储库不受 mac os 临时文件的影响。
希望对您有所帮助。