Apache Subversion预提交以限制文件

Apache Subversion预提交以限制文件,apache,svn,hook,pre-commit,Apache,Svn,Hook,Pre Commit,我是Apache SVN新手,需要一些帮助来使用预提交脚本筛选哪些文件正在上载到我的存储库 我搜索了很多,在另一个问题上找到了这个脚本,但它不适合我 #!/bin/bash REPOS=$1 TXN=$2 AWK=/usr/bin/awk SVNLOOK="/usr/bin/svnlook"; #Put all the restricted formats in variable FILTER FILTER=".(sh|xls|xlsx|exe|xlsm|XLSM|vsd|VSD|bak|B

我是Apache SVN新手,需要一些帮助来使用预提交脚本筛选哪些文件正在上载到我的存储库

我搜索了很多,在另一个问题上找到了这个脚本,但它不适合我

#!/bin/bash

REPOS=$1
TXN=$2
AWK=/usr/bin/awk
SVNLOOK="/usr/bin/svnlook";

#Put all the restricted formats in variable FILTER
FILTER=".(sh|xls|xlsx|exe|xlsm|XLSM|vsd|VSD|bak|BAK|class|CLASS)$"

# Figure out what directories have changed using svnlook.
FILES=`${SVNLOOK} changed -t ${REPOS}  ${TXN} | ${AWK} '{ print $2 }'` > /dev/null

for FILE in $FILES; do

#Get the base Filename to extract its extension
NAME=`basename "$FILE"`

#Get the extension of the current file
EXTENSION=`echo "$NAME" | cut -d'.' -f2-`

#Checks if it contains the restricted format
if [[ "$FILTER" == *"$EXTENSION"* ]]; then
echo "Your commit has been blocked because you are trying to commit a restricted file." 1>&2
echo "Please contact SVN Admin. -- Thank you" 1>&2
exit 1

fi

done
exit 0
如果我尝试使用
svnlook changed-t repodirectory
,它将无法工作,因为缺少子命令。
我重写了我的
pre-commit.tmpl
,但它不起作用,有人能帮我吗?

首先-似乎你没有正确使用svnlook。它应具有以下参数:

svnlook changed ${REPOS} -t ${TXN}
-t表示“从事务读取”,TXN表示事务名称本身

第二,不确定我是否理解正确,但hook文件的名称应该是pre-commit而不是pre-commit.tmpl

第三,预提交应具有正确的权限。对于测试,请尝试+rwx



更新。获取用于测试的事务对象并不容易,但您可以使用
svnlook-r
并对已经提交的修订版进行实验。

成功了,我不知道.tmpl扩展是用于“模板”的。我现在可以限制上传,但是如果我的提交中有一个受限制的文件,那么整个提交都将被阻止。