我正在调用一个git hook来执行pre-commit操作。这将触发一个对groovy脚本的调用,并以允许远程调试hook执行的方式进行。就像这样:
#!/usr/bin/env groovy
groovy -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8085,suspend=y "C:\Users\.......hooks\PreCommit.groovy"
当我使用GIT BASH触发钩子时,出现以下错误:
/c/Program Files (x86)/Groovy/Groovy-2.1.0/bin/startGroovy: line 96: [: too many arguments org.codehaus......: startup failed: .... expected EOF, found ':' @ line 3 column 35]
当我快速查看startGroovy文件时,我看到以下不清晰的代码 - 其中第96行是带有GROOVY home的if条件语句:
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$GROOVY_HOME" ] && GROOVY_HOME=`cygpath --unix "$GROOVY_HOME"`
[ -n "$JAVACMD" ] && JAVACMD=`cygpath --unix "$JAVACMD"`
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CP" ] && CP=`cygpath --path --unix "$CP"`
else
if [ -n "$GROOVY_HOME" -a `expr "$GROOVY_HOME":'\/$'` ] ; then
GROOVY_HOME=`echo $GROOVY_HOME | sed -e 's/\/$//'`
fi
fi
这是Groovy引导程序的一个错误吗?我在Windows 7上设置了GROOVY_HOME环境变量,正确指向:C:\program file (x86)\Groovy\Groovy-2.1.0。
if $cygwin
是假的,因此根本不会调用 cygpath,所以错误必须在if [ -n "$GROOVY_HOME" -a 'expr "$GROOVY_HOME":'\/$'' ] ; then GROOVY_HOME='echo $GROOVY_HOME | sed -e 's/\/$//'' fi
这里。我已经在我的 .bashrc 中插入了 exports,虽然它看起来设置正确,但在 startGroovy 文件中的 echo 将显示 GROOVY_HOME 格式仍为 Windows。 - Jes Chergui