首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行另一个脚本时Git预提交钩子错误

执行另一个脚本时Git预提交钩子错误
EN

Stack Overflow用户
提问于 2015-08-10 13:27:28
回答 1查看 843关注 0票数 0

我已经使用groovy脚本编写了git预提交钩子。我正在使用Windows 7。因为文件位于

.git/hooks/pre-commit

不是版本控制的,我已经将这些预提交挂钩移到项目子存储库中。

${PROJECT_REPO}/git-hooks目录

这是文件@ .git/hooks/pre-commit中的脚本

代码语言:javascript
复制
#!/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中的脚本

代码语言:javascript
复制
#!/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命令行调用时,我的脚本运行得很好。

代码语言:javascript
复制
${PROJECT_REPO}/.git/hooks>groovy pre-commit

由于所有脚本都在运行,所以我继续使用智能-git测试预提交钩子。

文件@ .git/hooks/pre-commit被正确执行,它能够正确地找到${GROOVY_HOME}${JAVA_HOME}路径。但在执行以下行时

代码语言:javascript
复制
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脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 00:23:31

最后我使用了windows符号链接。

代码语言:javascript
复制
cmd /c mklink /H ${link_file_full_path} ${Target_file_full_path}

从位于$WORK_TREE的另一个groovy脚本调用groovy脚本(位于$GIT_DIR })无效。

我认为这一定与环境变量有关。Smartgit将所有环境变量传递给第一个脚本,当调用另一个脚本时,该信息将丢失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31920838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档