คำตอบจาก @pauljz ใช้งานได้ดีสำหรับ git hook บางตัวเช่นpre-push
แต่pre-commit
ไม่สามารถเข้าถึงตัวแปรเหล่านั้นได้oldrev newrev refname
ดังนั้นฉันจึงสร้างเวอร์ชันทางเลือกนี้ขึ้นมาซึ่งใช้ได้กับการกระทำล่วงหน้าหรือจริงๆและขอ นี่คือpre-commit
เบ็ดที่จะเรียกใช้husky
สคริปต์หากเราไม่ได้อยู่ในmaster
สาขา
#!/bin/bash
# git 'commit' does not have access to these variables: oldrev newrev refname
# So get the branch name off the head
branchPath=$(git symbolic-ref -q HEAD) # Something like refs/heads/myBranchName
branch=${branchPath##*/} # Get text behind the last / of the branch path
echo "Head: $branchPath";
echo "Current Branch: $branch";
if [ "master" != "$branch" ]; then
# If we're NOT on the Master branch, then Do something
# Original Pre-push script from husky 0.14.3
command_exists () {
command -v "$1" >/dev/null 2>&1
}
has_hook_script () {
[ -f package.json ] && cat package.json | grep -q "\"$1\"[[:space:]]*:"
}
cd "frontend" # change to your project directory, if .git is a level higher
# Check if precommit script is defined, skip if not
has_hook_script precommit || exit 0
# Node standard installation
export PATH="$PATH:/c/Program Files/nodejs"
# Check that npm exists
command_exists npm || {
echo >&2 "husky > can't find npm in PATH, skipping precommit script in package.json"
exit 0
}
# Export Git hook params
export GIT_PARAMS="$*"
# Run npm script
echo "husky > npm run -s precommit (node `node -v`)"
echo
npm run -s precommit || {
echo
echo "husky > pre-commit hook failed (add --no-verify to bypass)"
exit 1
}
fi
ฉันหวังว่าจะช่วยใครบางคน คุณสามารถปรับเปลี่ยนตามความต้องการของคุณได้อย่างง่ายดายอะไรก็ได้ในระหว่างงบif
และfi
git push origin master
จะผลักmaster
สาขาไปที่origin
รีโมตเท่านั้นซึ่งฉันถือว่าถูกกำหนดให้เป็น Assembla คุณกำลังบอกว่าคุณต้องเรียกเบ็ดก็ต่อเมื่อมีคนผลักmaster
ตรงข้ามfeature1
หรืออะไรทำนองนั้น?