मैं आपकी क्या अपेक्षाएं हैं पर प्रतिबद्ध विलय मना है:दूरस्थ Git भंडार धक्का
मैं चाहता हूँ को नामंज़ूर किसी भी मर्ज करताहोने के लिए केंद्रीय भंडार के लिए धक्का दे दिया। केवल अपवाद यह है कि विलय केंद्रीय भंडार में मौजूद शाखाओं के बीच है। मैं इसे केंद्रीय भंडार में लागू करना चाहता हूं।
कारण है कि मैं ऐसा करना चाहते हैं का स्पष्टीकरण:
नोट: इस स्पष्टीकरण मुझे क्या करना चाहते हैं, उसके निशान बंद आप फेंकता है, तो स्पष्टीकरण ध्यान न दें। निस्संदेह मुझे नीचे बताई गई समस्या को हल करने के अन्य तरीकों को सुनकर खुशी हुई है, लेकिन जिस उत्तर में मुझे रूचि है, वह है जो मैं ऊपर बताए अनुसार करना चाहता हूं।
मेरे पास एक शाखा के साथ केंद्रीय गिट भंडार है जो कई डेवलपर ट्रैक करते हैं। प्रत्येक डेवलपर के पास उस केंद्रीय भंडार की शाखा के लिए रिमोट कॉन्फ़िगर किया गया है।
हम इस परियोजना के लिए एक सिंक्रोनस प्रतिबद्ध नीति का पालन करते हैं, इसलिए प्रत्येक डेवलपर को हमेशा धक्का देने से पहले रिमोट शाखा HEAD के शीर्ष पर अपने नवीनतम काम को दोबारा जरूरी करना चाहिए। मैं इस नीति को केंद्रीय भंडार में कभी भी धकेलने के लिए किसी विलय की प्रतिबद्धता को अस्वीकार कर लागू करना चाहता हूं। एकमात्र अपवाद यह है कि विलय केंद्रीय भंडार में मौजूद शाखाओं के बीच है।
सरल बनाने के लिए, मैं नहीं चाहता कि डेवलपर की स्थानीय ट्रैकिंग शाखाओं को कभी भी दूरस्थ शाखा के साथ विलय किया जाए। बल्कि हमेशा रिमोट शाखा पर छूट दी जाएगी।
हमने शाखा को स्थापित करके डेवलपर की मशीन पर आंशिक रूप से इसे लागू किया है .NAME.rebase = सत्य जो डेवलपर गिट पुल का उपयोग करता है, समस्याओं को टालने में मदद करता है, हालांकि हमें केंद्रीय भंडार पक्ष पर इसे लागू करने के लिए एक समाधान की आवश्यकता है।
एक बहुत ही मूल समाधान टिप्पणी के साथ काम करने से इंकार कर देगा: "GITURL के शाखा 'NAME को मर्ज करें" हालांकि, जांच के आधार पर कुछ और अधिक है कि क्या केंद्रीय रिपोजिटरी के शाखा पथों में प्रतिबद्धता के सभी माता-पिता मौजूद हैं अधिक दिलचस्प हो।
सुझाव? समाधान की?
संपादित करें:
#!/bin/sh
read sha1old sha1new refname
# check if this is merge commit
merge_commit="`git rev-list --parents --merges --no-walk $sha1new 2> /dev/null`"
if test -n "$merge_commit"
then
# this was a merge commit
# $merge_commit contains: sha1new sha1parent_1 ... sha1parent_n
fi
exit 0
जगह यह परेशानी हो जाता है यह पता लगाना है किसी भी दो माता-पिता के वंश एक भी शाखा से हुई हों:
यह वही है मैं अब तक है। इसके अलावा, क्योंकि किसी भी रेफ को अपडेट करने से पहले पूर्व-प्राप्त हुक को बुलाया जाता है, अगर रिमोट में मौजूद दो शाखाओं के लिए एक पुश होता है, जिसमें उन दो शाखाओं के बीच विलय शामिल होता है, तो मुझे नहीं पता कि समाधान क्या होगा .. ।
सटीक डुप्लिकेट: http://stackoverflow.com/questions/1997916/git-post-receive-how-to-check-if-pushed-branch-is-merged-with-master – Dustin
मैं पूरी तरह असहमत हूं कि यह पूरी तरह से असहमत है एक डुप्लिकेट मैंने जो कुछ पूछा है उसके साथ कुछ भी करना बहुत कम है। – chris