在subversion(svn)中添加预提交挂钩

时间:2014-04-12 06:49:43

标签: java javascript git svn repository

我想在svn中为jshint添加预提交钩子。因此,当我刚接触svn时,我需要一些帮助。我已经做了一些跟随的工作。下面是我的本地repo文件夹结构

svn-repo
    branches
    hooks
        pre-commit.sh
    tags
    trunk
        scripts
            script.js
        index.html
    .jshintrc

这是我的预提交钩子代码

    ROOT_DIR=$(git rev-parse --show-toplevel) # gets the path of this repo
    CONF="--config=${ROOT_DIR}/build/config/jshint.json" # path of your jshint config
    JSHINT=$(which jshint) # jshint path

    if git rev-parse --verify HEAD >/dev/null 2>&1; then
        against=HEAD
    else
        # Initial commit: diff against an empty tree object
        against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
    fi


    for file in $(git diff-index --name-only ${against} -- | egrep \.js); do
        if $JSHINT $file ${CONF} 2>&1 | grep 'No errors found' ; then
            echo "jslint passed ${file}"
            exit 0
        else
            $JSHINT $file
            exit 1
        fi
    done

我全局安装了jshint,位于以下位置

/usr/local/bin/jshint

现在当我提交不正确的javascript时,它仍然会被提交并且不会抛出任何错误,即使js包含根据.jshintrc的错误。

如何进行此预提交工作?

1 个答案:

答案 0 :(得分:0)

<强>相依

  • 我无法理解,为什么你在这里使用Git-voodoo,用于SVN交易

相关(部分)

如果你想从客户端监视钩子并看到任何输出,你必须将它重定向到stderr(你没有这样做),哪个钩子将返回客户端

<强>问题

此脚本是否在独立模式下按预期工作?