我想在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块
答案 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