The*_*rus 5 git bash 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
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经运行了这个工作,每当我运行它时npm run test:script,它就会运行>"test:script": "./branchname.sh"
但是,我有一些问题。每次有人提交时我如何运行它?
我尝试将其放入我的 package.json 中
"pre-commit": [
"lint",
"test:script"
],
Run Code Online (Sandbox Code Playgroud)
但它不会在每次提交时运行
另外,如果脚本失败,我怎样才能让提交本身中止,即跳到 else 块中
您可以利用 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5609 次 |
| 最近记录: |