【发布时间】:2016-05-17 15:41:04
【问题描述】:
我第一次做这样的钩子..
我需要一个预提交钩子来扫描所有要提交的 java 类,它应该检查类中是否存在某些字符,如果发现其中一些字符,例如 † 或 ¥ 等字符,则避免提交,我认为进行这种动态更改的好方法是将所有这些无效字符放入计划文件中,以便在需要时轻松更改它...
我从很久以前写的一个简单的钩子开始..
现在最大的问题是获取工作副本文件的位置.. 我应该扫描内容的那个。
我尝试了许多 svnlook 命令,但我真的无法将这些信息捕获到 pre-commit 钩子中......
获取大量信息,但不获取文件的本地路径。我正在使用它来扫描内容...
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 Bug:
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
【问题讨论】:
标签: java bash unix svn svn-hooks