这是我第一次写这样的挂钩...
我需要一个预提交挂钩来扫描所有要提交的Java类,它应该检查类中是否存在某些字符,并且如果找到其中的某些字符,如†或¥等,则不允许提交。我认为一个好的方法是将所有这些无效字符放入计划文件中,以便在需要时轻松更改...
我从很久以前写的一个简单的挂钩开始...
现在最大的问题是获取工作副本文件的位置... 它是我应该扫描内容的地方。
我尝试了许多svnlook命令,但我真的无法在预提交挂钩中捕获此信息...
获取了很多信息,但没有文件的本地路径。我使用它来扫描内容...
OUTPUT="$($SVNLOOK changed -t $TXN $REPOS)"
echo $SVNLOOK changed -t $TXN $REPOS 1>&2
echo "$BASEDIR" 1>&2
echo "${OUTPUT}" 1>&2
echo "$TXN $REPOS" 1>&2
也许是我的方法不对了吗?
非常感谢!
更新
感谢"CaffeineAddiction",第一次做某件事情总是一个“大问题”。
实际上,在一天的尝试之后,真正的问题是另一个问题,即与客户端字符编码相关的SVN错误。
Error output could not be translated from the native locale to UTF-8
现在这个最后的问题也得到了解决,脚本也能正常工作,您可以在下面看到它,只需要美化一下即可,顺便感谢您的帮助,我会从中汲取一些灵感:
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
OUTPUT="$($SVNLOOK changed -t $TXN $REPOS | awk '{print $2}')"
for LINE in $OUTPUT
do
FILE=`echo $LINE`
MESSAGE=`$SVNLOOK cat -t "$TXN" "$REPOS" "${FILE}"`
echo "File is: $FILE" 1>&2
echo "${MESSAGE}" > /tmp/app.txt
grep -P -n '[\x80-\xFF]' /tmp/app.txt | cut -f1 -d: 1>&2
done