3

事前コミットするために git フックを呼び出しています。これにより、groovy スクリプトの呼び出しがトリガーされ、フック実行のリモート デバッグを可能にする方法で呼び出しが行われます。そのようです:

#!/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 ホームの 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には、C:\ program file(x86)\ Groovy\Groovy-2.1.0を正しく指すenv変数GROOVY_HOMEがあります

4

2 に答える 2

1

cygpath コマンドは、cgywin の簡素化されたバージョンのみを実装する Git Bash から欠落しています。解決策の 1 つは、git に完全な cygwin インストールを使用することですが、おそらく UNIX スタイルのディレクトリ名を使用して独自の .bashrc を作成するのと似ています。

# Check to see what the DOS directories are
echo GROOVY_HOME=$GROOVY_HOME
echo JAVACMD=$JAVACMD
echo JAVA_HOME=$JAVA_HOME
echo CP=$CP

# Add the directories you found to .bashrc in a unix style
cat - >>~.bashrc
export GROOVY_HOME='/c/program file (x86)/Groovy/Groovy-2.1.0'
export JAVACMD="..."
export JAVA_HOME="/c/Program files/Java/jre7/bin/java"
export CP= "..."

パスは適宜変更してください。cat を使用する代わりに、notepad++ または別のエディターを使用して .bashrc を編集できます。cat - コマンドは、Bash では Control-D を使用して終了しますが、DOS の copy con file.txt は Control-Z を使用することに注意してください。これらの変数を .bashrc に配置すると、DOS 環境変数に干渉しなくなります。

于 2013-02-19T22:08:29.190 に答える