在允许给定存储库中进行任何提交之前运行验证脚本

问题描述 投票:0回答:1

每当 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 块中

bash git scripting
1个回答
5
投票

您可以利用 git hooks。您可以在项目文件夹中的

.git/hooks
文件夹中找到一堆文件。

完整文档:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks(于 2024 年更新)

请注意,您需要授予 exec 权限来挂钩文件。

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

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

为了与协作者共享钩子,您可以将

hooks/
文件夹添加到存储库,并将其符号链接到
.git/hooks
或通过命令编辑有关钩子位置的 git 配置

git config core.hooksPath hooks
© www.soinside.com 2019 - 2024. All rights reserved.