如何在每次提交时运行脚本

时间:2018-05-17 09:23:38

标签: bash git scripting

我想在RepoA中的某个人在本地运行脚本,在分支上进行提交

currentBranch=$(git rev-parse --abbrev-ref HEAD)

if [[ $currentBranch = *"my-"* ]]; then
  echo "contains my"
else
  echo "Hold on there! you need to rename your branch before you commit!
  "
fi

到目前为止,我已经运行了这个,每当我运行npm run test:script它运行> "test:script": "./branchname.sh"

但是,我有一些问题。一个人如何在每次有人提交时运行它?

我已经尝试将它放在我的package.json

  "pre-commit": [
    "lint",
    "test:script"
  ],

但它不会在每次提交

上运行

另外,如果脚本失败,我怎么能让提交本身中止,即跳转到else块

1 个答案:

答案 0 :(得分:3)

你可以利用git hooks。您可以在项目文件夹中的.git/hooks文件夹中找到大量文件。

这里有完整的文档:https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks

请注意,您需要为钩子文件提供exec权限。

钩子基本上可以是bash文件,因此您可以使用值中止退出提交!= 0。

这是一个例子:https://github.com/xyzale/my-stuff/blob/master/git/hooks/pre-commit

为了与协作者共享钩子,您可以将hooks/文件夹添加到您的存储库,并将其符号链接到.git/hooks或通过命令编辑关于钩子位置的git配置

git config core.hooksPath hooks