我已经使用groovy脚本编写了git预提交钩子。我正在使用Windows 7。因为文件位于
.git/hooks/pre-commit
不是版本控制的,我已经将这些预提交挂钩移到项目子存储库中。
${PROJECT_REPO}/git-hooks目录
这是文件@ .git/hooks/pre-commit中的脚本
#!/usr/bin/env groovy
public class PreCommitHooks
{
public static boolean CheckBannedFilesToCommit()
{
def process = "cmd /c groovy ../../git-hooks/pre-commit".execute();
process.waitFor();
if (process.exitValue())
{
return false;
}
return true;
}
}
// Create an instance of PreCommitHooks() class and execute list of hooks.
preCommitHook = new PreCommitHooks();
if (!preCommitHook.CheckBannedFilesToCommit())
{
System.exit(1);
}
else
{
System.exit(0);
}文件@ git-hooks/pre-commit中的脚本
#!/usr/bin/env groovy
This is pseudo code only
process all the hook info.
....
if (!bSuccess)
system.exit(1);
else
system.exit(0);我已经正确安装了所有的${GROOVY_HOME}和${JAVA_HOME}路径,并使用windows命令行进行了验证。当使用Windows命令行调用时,我的脚本运行得很好。
${PROJECT_REPO}/.git/hooks>groovy pre-commit由于所有脚本都在运行,所以我继续使用智能-git测试预提交钩子。
文件@ .git/hooks/pre-commit被正确执行,它能够正确地找到${GROOVY_HOME}和${JAVA_HOME}路径。但在执行以下行时
def process = "cmd /c groovy ../../git-hooks/pre-commit".execute();如果出现以下错误,则会失败。
错误: JAVA_HOME设置为无效目录: C:\Program (x86)\Java\Jdk1.8.0_51请在您的环境中设置JAVA_HOME变量以匹配您的JAVA_HOME安装位置。
有人能帮我解决这个错误吗?
我正在寻找一个groovy脚本解决方案,而不是bash脚本。
发布于 2015-08-13 00:23:31
最后我使用了windows符号链接。
cmd /c mklink /H ${link_file_full_path} ${Target_file_full_path}从位于$WORK_TREE的另一个groovy脚本调用groovy脚本(位于$GIT_DIR })无效。
我认为这一定与环境变量有关。Smartgit将所有环境变量传递给第一个脚本,当调用另一个脚本时,该信息将丢失。
https://stackoverflow.com/questions/31920838
复制相似问题