क्या बड़े व्यापारिक भंडार "पुश रेस" से पीड़ित हैं?


9

प्रोग्रामर्स पर कई सवालों के जवाब "कुछ क्यों एक डीवीसीएस बेहतर है" पढ़ना। यदि वे बड़े प्रोजेक्ट्स में कमिट रेस नहीं करते हैं, तो वे सामान्य रूप से कहते हैं कि डीवीसी बेहतर है। अपडेट, कमिट, आउट ऑफ़ डेट फिर से, कमिट, आउट ऑफ़ डेट, इत्यादि।

डीवीसीएस ने इसे पुश की अवधारणा के साथ सीमित किया है। हालांकि बहुत बड़ी परियोजनाओं में "पुश रेस" नहीं होगी, खासकर दिन के अंत में? मुझे पता है कि यह सब कुछ के लिए निरंतर शाखाओं में बंटी है, लेकिन मर्क्यूरियल में आप शाखा नहीं करते हैं, आप एक नया सिर बनाते हैं।

समस्या मैं देख रहा हूँ

  1. उपयोगकर्ता पुश करने का प्रयास करता है
  2. यदि आपका स्थानीय रेपो पुराना हो गया है, तो तारीख से बाहर (मर्क्यूरियल आपको धक्का नहीं देगा), इसलिए आप अपने स्थानीय परिवर्तनों को खींचते हैं और मर्ज करते हैं
  3. उपयोगकर्ता फिर से धक्का देने का प्रयास करता है, लेकिन जब वे किसी और को धक्का दे रहे थे, तो वे फिर से आउट हो गए
  4. फिर से खींचो और विलय करो
  5. फिर भी आउट ऑफ डेट
  6. दोहराना

जाना पहचाना?

क्या यह बहुत बड़ी और लोकप्रिय व्यापारिक पुनर्खरीद के साथ एक वास्तविक समस्या है? एक कंपनी के अंदर के बारे में क्या जब हर कोई दिन के अपने अंतिम धक्का करता है?


कौन शाखा में नहीं है? hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
कार्सन मायर्स

@ करसन गित शाखाओं में सस्ते होते हैं। भाड़े में वे अधिक स्थायी होते हैं। आम तौर पर मैंने सुना है कि एक सुविधा पर काम करने के लिए आप एक शाखा पर काम करते हैं, मेधावी में आप एक नया सिर बनाते हैं या एक अलग निर्देशिका में क्लोन करते हैं।
TheLQ

--close-branchजब आप कमिटिंग कर सकते हैं तो अच्छी तरह से जोड़ सकते हैं - और मर्क्यूरियल ने शाखाओं का नाम दिया है, आपको एक नई निर्देशिका के लिए क्लोन करने की ज़रूरत नहीं है
कार्सन मायर्स

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

मुझे यकीन नहीं है, मैंने कभी git का उपयोग नहीं किया है
कार्सन मायर्स

जवाबों:


8

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

अन्य कंपनियों में मैं प्रक्रिया के लिए प्रतिज्ञा नहीं कर सकता, लेकिन जहां मैं काम करता हूं यह कोई समस्या नहीं है।

देखें, जब आप किसी ऐसे मामले पर काम कर रहे हों, जिस पर आप पूरे रेपो की एक शाखा पर काम कर रहे हों, तो आपके पुश अनुरोध मुख्य डंक के दूरस्थ संस्करण पर जाते हैं। जब आप अपने (समाप्त) को ट्रंक में बदलना चाहते हैं तो आप ट्रंक, पुल, मर्ज, पुश अप लोड करते हैं।

कभी-कभी ( बहुत कभी-कभार) दो लोग एक ही समय में (सामान्य रूप से कुछ गलतफहमी के कारण) ऐसा करने की कोशिश करेंगे। इस मामले में जो भी "हारता है" उसे बस फिर से खींचना होगा, मर्ज करना होगा, धक्का देना होगा। के बाद से वहाँ कोई 5pm भीड़ एक केंद्रीय भंडार के लिए प्रतिबद्ध है कि आप जिस समस्या को रेखांकित किया है वह वास्तव में वहाँ नहीं है।

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

संपादित करें

ओह, मैंने अभी आपका "मर्क्यूरियल में ध्यान नहीं दिया है ..." टिप्पणी: हां, आप करते हैं। आपके पास नहीं है, लेकिन चूंकि यह इतना आसान है और ऐसा करने के लाभ बहुत अधिक नहीं हैं, इसलिए आप सिर्फ शाखा प्रतिनिधि को बहुत अधिक करते हैं।


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

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

कैसे आ रहा है कोई 5pm धक्का भीड़ है?
केम कैटिक्कास

जैसा कि मैंने कहा, ज्यादातर समय हर कोई अपनी शाखा पर काम कर रहा होता है (आप किसी अन्य व्यक्ति की तरह बिल्कुल उसी मुद्दे पर काम करने की संभावना नहीं रखते हैं), इसलिए हर कोई दिन के अंत में अलग-अलग शाखाओं में जाता है। इसके अलावा, मेरे काम पर हमारे पास फ्लेक्स का समय है, इसलिए यह शाम 4
एड जेम्स

1

नहीं, वहाँ एक धक्का दौड़ नहीं है क्योंकि विषय शाखाओं में काम किया जाता है । एक मर्ज मास्टर एक एकीकृत शाखा में शाखाओं के संयोजन की (अपेक्षाकृत कम) जटिलता का प्रबंधन करता है । यह आमतौर पर लगातार किया जाता है। वितरित संस्करण नियंत्रण workflows बारे में अधिक जानकारी के लिए, पहली स्रोत घोड़े के मुंह होगा: man gitworkflows, यहाँ ऑनलाइन । मर्क्युरियल workflows कर अपने दावे के बावजूद उपयोग शाखाओं और तकनीक के समान हैं।


ओपी यहाँ git और hg के बारे में भेद कर रहा है लेकिन आपका उत्तर git के लिए लक्षित है (उदाहरण के लिए पहला लिंक बहुत git-उन्मुख है)। यह एक सही उत्तर है (ओपी की मूल गलत व्याख्या के रूप में hg में ब्रांचिंग से सवाल ही पैदा होता है), लेकिन यह ध्यान देने योग्य है कि यह hg के लिए समान है।
ईडी जेम्स

@Ed अच्छा बिंदु, यह स्पष्ट करने के लिए अद्यतन किया गया है कि उत्तर गिट और व्यापारिक दोनों पर लागू होता है।
रीन हेनरिच

रिपॉजिटरी git.git देखें, यह DVCS का उपयोग करके विलय का एक अच्छा उदाहरण है। बहुत सारे मर्ज पॉइंट हैं। अंत में मुख्य शाखा में विलय होने से पहले एक ही समय में 10 से अधिक अस्थायी शाखाएं हो सकती हैं।
अलंकृत करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.