首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GIT缓存预提交挂钩吗?

GIT缓存预提交挂钩吗?
EN

Stack Overflow用户
提问于 2014-01-24 14:31:44
回答 1查看 3.2K关注 0票数 1

由于gJSLint由于缺少成员文档而产生错误。我们更新了我们的预提交钩子,它的任务是对JavaScript进行linting。编辑包括gJSLint规则220 (忽略丢失的成员文档)。但是,在执行提交时,GIT仍然会抱怨JavaScript无效。单独运行gJSLint不会产生任何错误。

gjslint -严格-禁用=5,6,110,220应用程序/pits/模块/api.js

我们已经删除了分阶段的文件,然后将它们添加回没有运气的阶段。

GIT缓存预提交挂钩吗?

预提交钩子

代码语言:javascript
复制
#!/bin/sh

files=$(git diff --cached --name-only --diff-filter=ACM | grep ".js$") if [ "$files" = "" ]; then 
    exit 0  fi

pass=true

echo "\nValidating JavaScript:\n"

for file in ${files}; do
    result=$(gjslint --strict --disable=5,6,110,220 ${file} | grep "${file} is OK")
    if [ "$result" != "" ]; then
        echo "\t\033[32mJSLint Passed: ${file}\033[0m"
    else
        echo "\t\033[31mJSLint Failed: ${file}\033[0m"
        pass=false
    fi done

echo "\nJavaScript validation complete\n"

if ! $pass; then
    echo "\033[41mCOMMIT FAILED:\033[0m Your commit contains files that should pass JSLint but do not. Please fix the JSLint errors and try again.\n          try: gjslint --strict --disable=5,6,110,220 file.js\n"
    exit 1 else
    echo "\033[42mCOMMIT SUCCEEDED\033[0m\n" fi

git提交的结果-m“.”

验证JavaScript: JSLint失败:app/pits/模块/api.js JSLint失败:app/pits/模块/State.js JSLint失败:app/pits/模块/table.js JavaScript验证完成 提交失败:提交包含的文件应该通过JSLint,但是 别说了。请修复JSLint错误,然后重试。尝试: gjslint -严格-禁用=5,6,110,220 file.js

环境

git版本1.8.1.2

gjslint版本2.3.13

lubuntu版本13.04

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-24 15:06:21

这个问题与GIT无关,是由编写不当的预提交钩子造成的。

代码语言:javascript
复制
#!/bin/sh

files=$(git diff --cached --name-only --diff-filter=ACM | grep ".js$")
if [ "$files" = "" ]; then
    exit 0
fi

pass=true

echo "\nValidating JavaScript:\n"

for file in ${files}; do
    eval "gjslint --strict --disable=5,6,110,220 ${file}"

    if [ $? -eq 0 ]; then
        echo "\t\033[32mJSLint Passed: ${file}\033[0m"
    else
        echo "\t\033[31mJSLint Failed: ${file}\033[0m"
        pass=false
    fi
done

echo "\nJavaScript validation complete\n"

if ! $pass; then
    echo "\033[41mCOMMIT FAILED:\033[0m Your commit contains files that should pass JSLint but do not. Please fix the JSLint errors and try again.\n          try: gjslint --strict --disable=5,6,110,220 file.js\n"
    exit 1
else
    echo "\033[42mCOMMIT SUCCEEDED\033[0m\n"
fi
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21335220

复制
相关文章

相似问题

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