git - 在 Windows 7 上使用 GIT BASH 的 Groovy Bootstrap 错误

标签 git unix groovy cygwin

我正在调用一个 git hook 来预提交。这会触发对 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 触发 Hook 时,我看到以下错误:

/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

这是常规 Bootstrap 中的错误吗? 我的 Windows 7 环境变量 GROOVY_HOME 正确指向:C:\program file (x86)\Groovy\Groovy-2.1.0

最佳答案

问题出在 Groovy 的脚本中。该脚本没有在所有正确的地方正确引用环境变量 GROOVY_HOME。 GROOVY_HOME 表示的路径中的空格,在我的例子中“Program Files (x86)”有 2 个空格,被解释为分隔符并导致路径被解析为多于 1 个参数。要修复它,请更改 Windows 环境变量 GROOVY_HOME 的定义以使用波浪号版本的路径。编辑环境变量 GROOVY_HOME(在 Vista 上,开始/右键单击计算机/属性/高级系统设置/环境变量/用户或系统,我的是系统)并设置为 c:/Progra~2/Groovy/Groovy-2.1。 3.当您启动 Git、MinGW 或 CygWin shell 时,您不会有空格,也不应该出现任何错误。

关于git - 在 Windows 7 上使用 GIT BASH 的 Groovy Bootstrap 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14966631/

相关文章:

git - 致命的 : early EOF fatal: index-pack failed

linux - bash 脚本中带有空格的基本名称?

git - 如何重做git中丢弃的本地更改?

git - 关于 git pull --rebase 的困惑

UNIX grep - 如何在特定命名的文件中递归查找文本?

java - 将 Spring XML 上下文移至 Groovy

grails - 将值传递给另一个 Controller 功能时出错

java - 如何在 grails Controller 中找到我的 servlet 的当前目录位置? (或 java servlet)

ruby - "/usr/bin/env: ruby_executable_hooks: No such file or directory"怎么解决?

linux - 如何根据搜索在文件内容中附加字符串