@Pauljz से जवाब कुछ निश्चित हुक के लिए ठीक काम करता है 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
रिमोट पर धकेल देगा , जो मुझे लगता है कि असेंबला के रूप में परिभाषित किया गया है। क्या आप कह रहे हैं कि आपको हुक को ट्रिगर करने की ज़रूरत है जब कोई व्यक्ति धक्का देता हैmaster
, जैसा कि विरोध किया जाता हैfeature1
, या ऐसा कुछ?