2011-11-01 14 views
7

वापस लौटाना हमारी टीम हमारे वर्कफ़्लो को प्रबंधित करने के लिए गिथब पुल अनुरोधों का उपयोग करती है, what is described here की तरह। स्वीकार्य पुल अनुरोध की मैन्युअल रूप से समीक्षा करने पर, हमें कभी-कभी उस विलय को वापस करने की आवश्यकता होती है क्योंकि यह हमारे उत्पादन सर्वर पर तैनाती के लिए तैयार नहीं है।एक गिट मर्ज प्रतिबद्धता को वापस लेना, फिर

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

चूंकि गिथब इस सुविधा का समर्थन नहीं करता है (यानी, न तो विलय को वापस लेना, न ही मूल पुल अनुरोध को पूर्ववत/पुन: जारी करना), मैं वर्तमान में वापस विलय को वापस कर रहा हूं। यह गलत लगता है।

गिट में एक ही लक्ष्य को प्राप्त करने के लिए मैं अन्य तरीकों का उपयोग कैसे कर सकता हूं? (या यह संभव है कि गिथब)

+1

यदि आपने स्थानीय रूप से पुल अनुरोध से काम करने की कोशिश की है, और परीक्षण के बाद फैसला किया है कि आप अभी भी विलय करना नहीं चाहते हैं, तो आप विलय से पहले मास्टर को रीसेट करने के बजाय विलय को वापस क्यों करते हैं ? (मुझे लगता है कि आप पुल अनुरोध विलय करने के बाद अपनी मास्टर शाखा प्रकाशित नहीं करते हैं, लेकिन यह तय करने से पहले कि इसे रखना है या नहीं।) –

+0

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

+0

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

उत्तर

1

मुझे लगता है कि आपकी समस्या यहां उत्पन्न होती है क्योंकि जब आप पुल अनुरोधों से निपट रहे हैं, तो आप उन्हें स्वचालित रूप से गिटहब पर विलय करने का विकल्प चुन रहे हैं। पुल अनुरोधों से निपटने के तीन सुझाए गए तरीकों में से described in the documentation आप अंतिम एक ("ऑटो मर्ज") का उपयोग कर रहे हैं, जो केवल recently implemented था। निजी तौर पर, मुझे लगता है कि यह केवल छोटे पुल अनुरोधों के लिए उपयुक्त है जो स्पष्ट रूप से सही हैं। कुछ भी और अधिक जटिल के लिए, मैं पहले दृष्टिकोण,

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

इसका मतलब है कि विलय संस्करण केवल एक बार सार्वजनिक है जब आपने इसका परीक्षण किया है और टी का फैसला किया है ओ धक्का यदि आप नहीं चाहते हैं, तो आप अपनी मास्टर शाखा को अपनी पिछली स्थिति में रीसेट कर सकते हैं।


ब्याज की बात है, यह क्या होता है अगर आप अंत तक एक अफसोस की बात मर्ज वापस लौटने के लिए होने करना के बारे में अधिक कह लायक हो सकता है, लेकिन अभी भी बाद के संस्करण को फिर से विलय करने का विकल्प है चाहता हूँ उस शाखा का। हालांकि यह गलत महसूस हो सकता है, क्योंकि मैं समझता हूं कि उस स्थिति से निपटने का सबसे आसान तरीका वास्तव में वापसी को वापस करना है। आप लिनक्स टोरवाल्ड्स द्वारा this post from the Pro Git blog और another discussion of the same problem में इस समस्या के बारे में अधिक चर्चा प्राप्त कर सकते हैं जो सहायक भी हो सकता है।

+0

हाय मार्क - मैंने उन अंतिम 2 लेखों को पहले पढ़ा है और आप मुझे याद दिलाने की सराहना करते हैं। मुझे आपके सुझाव को लागू करना अच्छा लगेगा, सिवाय इसके कि हमारे संगठन के किसी भी सदस्य के पास गितूब पर अपना कांटा नहीं है, वे केवल हमारे रेपो से क्लोन करते हैं, क्योंकि हमारा मालिक चाहता था कि प्रत्येक देव अपनी शाखाओं को फीचर करने के लिए धक्का दे, बस हमारे पास एक प्रति है उनका काम। हालांकि, मैं एक साझा साझा मशीन पर सभी "रिमोट्स" सेट करने में सक्षम हो सकता हूं और उन्हें उस पर धक्का दे सकता हूं ताकि हम परीक्षण कर सकें। बड़ी बाधा तैनाती/समीक्षा प्रक्रिया स्वचालित हो जाएगी। अंतर्दृष्टि के लिए धन्यवाद! –

+0

@ क्रिस कैसल: कोई समस्या नहीं। वास्तव में, यदि वे केवल शाखाओं को फ़ीचर करने के लिए दबाव डाल रहे हैं तो यह और भी आसान है - आपको रिमोट जोड़ने की आवश्यकता नहीं है, बस 'गिट फ़ेच मूल' करें और सही रिमोट-ट्रैकिंग शाखा से विलय करने का प्रयास करें। –

+0

हमम ... हमारी वर्तमान प्रक्रिया के लिए आवश्यक है कि हमारे सीआई पास के बाद एक क्यूए व्यक्ति मैन्युअल रूप से इसकी समीक्षा करे। मुझे नवीनतम प्रतिलिपि रखने के लिए जेनकिंस को "गिट पुल - रीबेस मूल मास्टर" में कॉन्फ़िगर करने की आवश्यकता है, फिर परीक्षण सूट चलाने से पहले सबकुछ अद्यतित करने के लिए फीचर शाखा और "गिट रिबेस-आई" चेकआउट करें। यदि वह गुजरता है, तो मैं इसे एक परीक्षण सर्वर पर स्वतः तैनात कर सकता हूं जहां हमारी क्यूए समीक्षा होती है। फिर यदि वह सब गुजरता है, तो मैं पुल अनुरोध स्वीकार कर सकता हूं, क्योंकि यह एकमात्र ऐसा कार्य है जो मास्टर में विलय करेगा। इससे बहुत मदद मिल सकती है। मुझे इस पर अपने विचार बताएं। धन्यवाद! –

0

मैं सुझाव दूंगा कि आप लोग एक अलग दृष्टिकोण लें। रिवर्ट करने और वापस करने का आपका वर्कफ़्लो मुझे बहुत भ्रमित लगता है। वास्तविक समस्या जिसे आप हल करने की कोशिश कर रहे हैं उसे अलग-अलग निपटाया जा सकता है।

मेरा सुझाव है कि आप दो शाखाओं का उपयोग करने के लिए अपना वर्कफ़्लो बदलें। एक स्थिर शाखा (master) और एक विकास शाखा (develop)। सभी काम develop शाखा में, या अलग-अलग विषय शाखाओं में जाते हैं। पुल अनुरोध हमेशा develop शाखा के खिलाफ दायर किए जाते हैं, फिर अनुमोदित होने पर develop में विलय हो जाते हैं।

master प्रारंभ में develop से ब्रांच किया गया है।जैसे ही develop एक स्थिर स्थिति में है, आप इसे master में विलय करते हैं। master वर्तमान स्थिर रिलीज है।

यह nvie's "A successful Git branching model" पर आधारित है।

+0

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

0

यदि आपको शाखा-प्रति-सुविधा रेजिमेंट मिलती है, तो आप रिलीज उम्मीदवार को अपनी पसंदीदा सुविधाओं के साथ पुनर्निर्माण कर सकते हैं। आप "किसी मर्ज वापस लौटने" की जरूरत नहीं होगी:

आगे पढ़ने: https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

कृपया अतिरिक्त जानकारी के लिए टिप्पणियों को देखने के रूप में अच्छी तरह। यह हमारे लिए वास्तव में अच्छा काम करता है।

संबंधित मुद्दे