git hook只允许使用单个提交

时间:2015-07-14 11:24:07

标签: git githooks

在存储库中,我只允许每个分支提交一次。在多次提交的情况下,在合并之前需要rebase ..因为失败是人类我用来忘记这一点。

我想实现一个git-hook,它检查合并请求是否合并到开发中的分支是否只有一个提交。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果要在远程实现挂钩,则可以使用update hook运行以列出不同的提交,然后使用输出中的行数。 old_hash和new_hash作为参数传递给此钩子,它是现有的和新的提交哈希值。 Git会将此钩子称为

"$GIT_DIR/hooks/update refname old_hash new_hash"

以下是一个示例,您可以插入git rev-list --merges ${1}~1..${1}来确定它是否是合并提交

case "$1" in
  refs/heads/*)
    is_merge = $(git rev-list --merges ${1}~1..${1})
    if [ ! -z "${is_merge}" ]; then 
        commit_count = $(git rev-list $2..$3 | wc -l)
        if [ ${commit_count} > 1 ]; then
            echo <reject with your message>
            exit 1
        fi
    else
       <Not a merge commit do other validations>
    fi
    ;;
esac