为了方便管理,svn上传需要限制文件大小 svn有几种钩子,资料一搜一大把,限制上传文件大小需要用到 pre-commit 在仓库hooks目录下有示例配置文件,新建一个名为 pre-commit 的脚本,内容如下:

#!/bin/bash
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
MAX_SIZE=512000

files=$($SVNLOOK changed -t $TXN $REPOS | awk '{print $2}')

# check check 
if [[ $files =~ "project_nuli" ]];then
for f in $files
do
    # check file size
    filesize=$($SVNLOOK cat -t $TXN $REPOS $f | wc -c)
    if [ $filesize -gt $MAX_SIZE ] ; then
        echo "File $f is too large (must <= $MAX_SIZE)" >> /dev/stderr
        exit 1
    fi
done
fi
exit 0

客户端提交大于500K文件会返回 File $f is too large (must <= $MAX_SIZE)

提交时,强制用户输入注释内容: vim pre-commit

#!/bin/bash
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
files=$($SVNLOOK changed -t $TXN $REPOS | awk '{print $2}')
for f in $files
do
    LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
    if [ "$LOGMSG" -lt 5 ];then
        echo -e "\nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2
        exit 1
    fi
done
exit 0