zoukankan      html  css  js  c++  java
  • git pre-push hook

    This article introduces git pre-push hook.

    Problem

    In Lean project, we use a modified version of Google’s C++ style checker. I want to automatically run the checker over the changed files before I push commits to git repositories. This is useful because it prevents me from accidentally pushing the commits which contain style problems.

    Solution: git pre-push hook

    Since git 1.8.2, git introduced pre-push hook which is executed before actual push operation is performed. The following two steps solve the problem.

    • Create <PROJECT_ROOT>/.git/hooks/pre-push file with the following contents:
    #!/usr/bin/env bash
    IFS=' '
    DIR="$( cd "$( dirname "$0" )" && pwd )"
    CHECKER=$DIR/../../src/cmake/Modules/cpplint.py
    while read local_ref local_sha remote_ref remote_sha;
    do
        CHANGED_FILES=`git diff --name-only $local_sha $remote_sha | grep '(cpp|h)$'`
        if [ ! -z "$CHANGED_FILES" -a "$CHANGED_FILES" != " " ]; then
            echo $CHANGED_FILES | xargs $CHECKER
            RET=$?
            if [ $RET -ne 0 ]; then
                echo "There is error(s) from style-check. Please fix them before push to the repo."
                exit $RET
            fi
        fi
    done
    exit 0
    • Give “exec” permission to the file
    chmod +x <PROJECT_ROOT>/.git/hooks/pre-push

    Note that you need to change CHECKER variable if you want to use other checkers.

  • 相关阅读:
    Codeforces 385C
    Codeforces 496C
    HDU 6114 Chess
    Codeforces 839B
    Codeforces 483B
    Codeforces 352B
    Codeforces 768B
    Codeforces 38B
    Codeforces 735B
    Codeforces 534B
  • 原文地址:https://www.cnblogs.com/jiu0821/p/10760275.html
Copyright © 2011-2022 走看看