[英]Svn pre-commit hook for checkstyle
这是我当前的checkstyle shell脚本。 如果我在TRUNK上提交但不在分支上提交,则可以正常工作。 我真的不明白为什么它不起作用。 有人可以帮帮我吗?
#!/bin/sh
###################################################
#
# Verify Checkstyle
#
###################################################
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
JAVA=/opt/ibm/java2-i386-50/bin/java
CHECKSTYLE=/usr/local/checkstyle/checkstyle-all-5.1.jar
TMPDIR=/tmp/$TXN
REPORT=/tmp/$TXN/report
CHECKSTYLE_CONFIG=/usr/local/checkstyle/checkstyle.xml
CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep -v "^D" | awk '{print $2}'`
mkdir -p $TMPDIR
for LINE in $CHANGED ; do
FILE=`echo $LINE | egrep -v Test\\.java$ | egrep -v \\/src\\/test\\/ | egrep -v \\/js\\/ext`
if [ -n "$FILE" ] ; then
DIRNAME=`dirname $FILE`
mkdir -p $TMPDIR/$DIRNAME
$SVNLOOK cat $REPOS --transaction $TXN $FILE > $TMPDIR/$FILE
fi
done
$JAVA -jar $CHECKSTYLE -c $CHECKSTYLE_CONFIG -r $TMPDIR > $TMPDIR/tmpfile.checkstyle
X=$?
if [ $X -ne 0 ] ; then
cat $TMPDIR/tmpfile.checkstyle > /dev/stderr
rm -Rf $TMPDIR
exit 1
fi
rm -Rf $TMPDIR
exit 0
谢谢!
忠告:不要将此作为预先提交的脚本。
checkstyle
捕获了一些不是问题的东西,或者开发人员写的方式实际上比checkstyle
坚持的应该更清楚,更容易理解,该怎么办? 当您使用诸如checkstyle
或findbugs
类的东西时,您必须了解您会得到一些误报。 更好的方法是使用像Jenkins这样的连续构建引擎。 可以将Jenkins设置为在每次提交时自动启动构建。 詹金斯可以:
您不必使用詹金斯。 哈德森仍然在那里。 CruiseControl也是如此,您可以在那里使用TeamCity,Bamboo和许多其他连续构建系统。 我喜欢Jenkins,因为开发非常活跃,而且设置非常简单。 我花了30分钟左右的时间下载并开始我的第一份工作。
我知道您问过您的预提交钩子,但我不想听起来像个推销员(詹金斯是自由开放的源代码,并且我与项目没有任何联系),但是像检查checkstyle
一样复杂。提交前的钩子正在请求麻烦。 使用连续构建服务器只是解决此问题的更好方法。
一个提示。
尝试比较目录结构,然后创建临时目录(删除“ rm -Rf $ TMPDIR”)。
也许您在主干和分支之间有区别,例如:
中继线:/tmp/12/code/file.java
分支:/tmp/br1/12/code/file.java
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.