我所做的是制作一个预推bash脚本,并将其提交到存储库中。然后使用husky参数从husky预推钩子调用此脚本。
这是我的哈士奇配置包内。json(如果需要,可以设置单独的配置)
"husky": {
"hooks": {
"pre-commit": "./commands/pre-commit",
"pre-push": "./commands/pre-push $HUSKY_GIT_STDIN"
}
},
如您所见,我有两个脚本,一个用于预推,另一个用于预提交。
这是我的
commands/pre-push
剧本
#!/bin/bash
echo -e "===\n>> Talenavi Pre-push Hook: Checking branch name / Mengecek nama branch..."
BRANCH=`git rev-parse --abbrev-ref HEAD`
PROTECTED_BRANCHES="^(master|develop)"
if [[ $1 != *"$BRANCH"* ]]
then
echo -e "\nð« You must use (git push origin $BRANCH) / Anda harus menggunakan (git push origin $BRANCH).\n" && exit 1
fi
if [[ "$BRANCH" =~ $PROTECTED_BRANCHES ]]
then
echo -e "\nð« Cannot push to remote $BRANCH branch, please create your own branch and use PR."
echo -e "ð« Tidak bisa push ke remote branch $BRANCH, silahkan buat branch kamu sendiri dan gunakan pull request.\n" && exit 1
fi
echo -e ">> Finish checking branch name / Selesai mengecek nama branch.\n==="
exit 0
-
这个脚本将阻止任何试图推到某个分支的人(在我的情况下,我不希望任何人——包括我自己——直接推到某个分支)
master
和
develop
分支机构)。他们需要在自己的分支中工作,然后创建拉请求。
-
此脚本将阻止任何试图推送到与其当前活动分支不同的分支的人。例如,您在分行
fix/someissue
但是你打错了
git push origin master
.
https://github.com/talenavi/husky-precommit-prepush-githooks