2011-11-23 6 views
7

मैं गिट हुक के साथ खेलना शुरू कर रहा हूं, और एक डेवलपर को एक विशिष्ट शाखा पर एक नई शाखा बनाने से रोकने के लिए एक बनाना चाहता हूं। हमारी कंपनी में वर्तमान प्रक्रिया इस तरह दिखना करने के लिए है:विशिष्ट शाखाओं से नई शाखाएं बनाने से रोकने के लिए गिट हुक

git checkout master 
git fetch 
git reset --hard origin/master 
git checkout -b [branch name] 
do awesome things. 

हालांकि, कभी-कभी जब जल्दी से आगे बढ़, कुछ डेवलपर्स अंत एक मचान रेपो से इस नई शाखा शुरू। जो दुःख का कारण बनता है।

तो, जब कोई डेवलपर नई शाखा बनाने शुरू करता है, तो जांचें कि कौन सी शाखा चालू है, और exit 1 यदि शाखा master नहीं है (या केवल सामान्य रूप से कार्रवाई को रोकती है तो मैं एक हुक बनाना चाहता हूं यदि शाखा का नाम staging है), या इसे अन्यथा अनुमति दें।

संपादित करें:

मैं इस बारे में अधिक खोज के रूप में, मुझे लगता है मैं एक पूर्व चेकआउट हुक, जो अस्तित्व में नहीं दिखाई देती है। जब तक किसी के पास कोई बेहतर विचार न हो, तब तक उपरोक्त परिदृश्य पास होने पर मैं पोस्ट-चेकआउट हुक में एक बहुत बड़ी चेतावनी प्रिंट करने के लिए आगे बढ़ूंगा।

+0

फिर, तुम क्यों शाखाओं को रोकने के लिए करना चाहते हैं? – jman

+1

हमारी स्टेजिंग शाखा में बहुत सारे कोड हैं जो हम उत्पादन में धक्का नहीं चाहते हैं, जरूरी है। – hookedonwinter

उत्तर

0

मैं इसे आशीर्वाद रेपो पक्ष पर पकड़ूंगा। यदि एक देव ने नवीनतम मास्टर से दूर की गई प्रतिबद्धता के अलावा किसी अन्य चीज़ पर शाखा शुरू की है, तो शाखा के धक्का को अस्वीकार कर दें। वे मास्टर के रिबेजिंग और फिर से धक्का देकर सही कर सकते हैं। सुनिश्चित करें कि आपका त्रुटि संदेश वर्णनात्मक है ताकि वे जान सकें कि उनकी स्थिति को कैसे ठीक किया जाए।

git fetch 
git push . origin/master:master 

फिर नवीनतम गुरु की एक शाखा बनाने:

इसके अलावा, यह के साथ बाहर की जाँच के बिना अपने गुरु को अद्यतन

git checkout -b somecoolfeature master 

तुम भी अपने स्थानीय गुरु है की जरूरत नहीं है तारीख तक:

git fetch 
git checkout -b somecoolfeature origin/master 
do awesome stuff :) 
1

क्लाइंट पक्ष के लिए आप एक पोस्ट बना सकते हैं -चेकआउट हुक जो गिट शाखा का उपयोग करता है - मौजूदा शाखा में शाखाओं को विलय करने के लिए मिलाया गया है। यदि शाखा जो आप ब्रांचिंग से रोकना चाहते हैं तो वर्तमान शाखा में विलय हो जाती है तो आप त्रुटि फेंक देते हैं।

बाख में

कोड इस प्रकार दिखाई देगा:

 
#!/bin/sh 

getBranchName() 
{ 
    echo $(git rev-parse --abbrev-ref HEAD) 
} 

getMergedBranches() 
{ 
    echo $(git branch --merged) 
} 

if [ "$(getBranchName)" != "dev" ]; then 
    if [[ $(getMergedBranches) == *"dev"* ]]; then 
     echo "Don't create branches from the dev branch!" 
     exit 1 
    fi 
fi 
संबंधित मुद्दे