git hook拒绝添加具有特定扩展名的文件

时间:2016-02-05 08:09:37

标签: git githooks

如何拒绝推送* .bak文件,例如?

所以带有此扩展名并重命名为* .bak的新文件被git服务器阻止。

3 个答案:

答案 0 :(得分:2)

你可以在这里编写一个简单的git pre-commit钩子脚本:

git diff --cached --name-status | while read status file; do    
    # do a check only on the .bak files
    if [[ "$file" =~ ".bak$" ]] ; then
        echo "Please remove *.bak files before committing"
        exit 1
    fi
done

答案 1 :(得分:2)

有一些pre-receive挂钩工作:

# refuse certain file name extensions
if [ "$newrev" != "0000000000000000000000000000000000000000" ] && [ "$oldrev" != "0000000000000000000000000000000000000000" ]; then
    if forbidden="$(git show --pretty="format:" --name-only --diff-filter=A "$oldrev..$newrev" | egrep '\.(bak|old)$')"; then
        echo "============================";
        echo "";
        echo "FATAL ERROR: Forbiden file types detected:";
        echo "";
        printf '%s\n' "$forbidden"
        echo "";
        echo "============================";
        exit 1;
    fi
fi

它不检查这些文件的新分支。

答案 2 :(得分:0)

newrev和oldrev的值是多少? 除非指定特定的分支名称,否则git hook应该适用于存储库中的所有分支。 类似于:git rev-parse --symbolic --abbrev-ref