提交git hook到repo

时间:2018-06-13 11:29:21

标签: bash git hook pre-commit

我遇到配置tslint和预提交挂钩的问题。 关键是我创建的tsconfig文件很好用。并添加了bash脚本,如果tslint返回任何错误,则不允许我提交。 Problme是我需要为我团队中的其他人提交此挂钩文件。这应该自动替换.git文件夹中的预提交挂钩。我刚刚发现了一个bash脚本,它检查'hooks'文件夹中的钩子并将其替换为.git文件夹。我怎样才能实现这一点并为我的团队“自动”实现?

1 个答案:

答案 0 :(得分:1)

出于安全原因,

“提交挂钩”是不可能的。如果可以,那么有人只是克隆您的仓库并运行基本操作就可以在他们的机器上执行任意代码。

处理这个问题的两种常见方法是:

  • 记录人们必须做些什么才能使钩子在其存储库中运行。

  • 自动化人们必须做些什么来获得它。例如,在使用Makefile的项目中,我在Makefile中有这个,人们可以运行make setup-pre-push-hook来获取钩子,只要他们推动就运行“make check”:

setup-pre-push-hook: setup-pre-push-hook-file
    grep -q 'make check' .git/hooks/pre-push || \
        printf '\n%s\n\n' 'make check' >> .git/hooks/pre-push

setup-pre-push-hook-file:
    test -f .git/hooks/pre-push || echo '#!/bin/sh' >.git/hooks/pre-push
    test -x .git/hooks/pre-push || chmod +x .git/hooks/pre-push