2010-10-08 13 views
17

मैं Bitbucket के माध्यम से जा रहा हूं और मुझे Mercurial रिपॉजिटरीज़ नहीं मिल रहा है जो मुझे लगता है कि हमारे भंडार की तरह क्या दिखता है, बशर्ते हम Mercurial पर स्विच करें।कई सक्रिय डेवलपर्स के साथ Mercurial भंडार?

इस तरह, मैं सोच रहा हूं, क्या कोई वर्कफ़्लो है जिसे हम यहां पर विचार नहीं कर रहे हैं?

जिस चीज के बारे में मैं बात कर रहा हूं वह यह है कि मैंने एक छोटा स्वचालित परीक्षण किया था। हम 14 लोग हैं जो एक ही परियोजना पर काम करते हैं, 4 स्क्रम टीमों में विभाजित होते हैं। 14 (मैंने 10, राउंड नंबर) को कोड पर समानांतर में काम करने के लिए, Mercurial DVCS का उपयोग करके, उसी केंद्रीय मास्टर रिपोजिटरी को दबाकर, मैंने एक स्क्रिप्ट लिखी।

  1. मैं एक नया "मास्टर" भंडार बनाया, और फिर, 10 आभासी लोगों
  2. मैं तो एक 1000 यात्रा पाश भाग गया के लिए यह क्लोन एक यादृच्छिक क्लोन उठा, और निम्न में से एक:
      समय की
    • 10%,, गुरु से एक पुल करना विलय, मर्ज करने, और समय की धक्का
    • 90%, एक स्थानीय परिवर्तन करते हैं और प्रतिबद्ध

ध्यान दें कि मैंने यह सुनिश्चित किया है कि प्रत्येक वर्चुअल व्यक्ति को अपनी फ़ाइल पर काम करके केवल विलय विवाद नहीं होगा।

यह खींचने, विलय करने और धक्का देने से पहले 1+ काम करके लोगों को स्थानीय रूप से काम करने वाले लोगों को अनुकरण करेगा (मास्टर रेपो में 2+ सिर से बचने के लिए)। यह हो सकता है कि यह वर्कफ़्लो गलत है।

sample screenshot from TortoiseHg

भंडार यहां पाया जा सकता:

यह भंडार अब (स्क्रीनशॉट + रेपो के लिए लिंक) की तरह दिखता है क्या का एक नमूना है http://hg.vkarlsen.no/hgweb.cgi/parallel_test/graph

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

  1. किसी को भी मुझे एक रिपोजिटरी समान इतिहास रहा है कि दिखा सकते हैं:

    तो मैं दो प्रश्न हैं? चूंकि मुझे कोई भी प्रतीत नहीं होता है, इसलिए मुझे आश्चर्य हो रहा है कि मैं किस प्रकार के निष्कर्ष निकाल सकता हूं ...

  2. क्या हमारे वर्कफ़्लो में कुछ गड़बड़ है (यानी, वर्कफ़्लो जो मैंने निर्धारित किया है यहाँ)? क्या हमें पुन: स्वाद/स्क्वैश/प्रत्यारोपण करना चाहिए, एक व्यक्ति, अन्य चीजों को पुश ज़िम्मेदारी सौंपना चाहिए, जिस तरह से यह यहां किया गया था?

उत्तर

8

प्रभावशाली तैयारी!

  1. यदि आप थोड़ा सा वापस जाते हैं और एक ही समय में सभी पुराने कामों को देखते हैं तो यह हमेशा गन्दा दिखता है। यह हमेशा छोटे-छोटे इतिहास को देखते हुए, यहां तक ​​कि कागजात भी होते हैं। उदाहरण के लिए http://hg.intevation.org/mercurial/crew/graph/12402?revcount=120 देखें। यह सबसे हालिया प्रतिबद्धता नहीं है, लेकिन उस प्रतिबद्धता के लिए सभी इतिहास दिखाता है।

  2. रीबेस बहुत मदद करता है, खासकर यदि लोग अलग-अलग क्षेत्रों पर काम कर रहे हैं। (मैं आमतौर पर भेजे प्रतिबद्ध जाँच अगर वहाँ संभावित फ़ाइल या कार्यक्षमता संघर्ष कर रहे हैं देखने के लिए, और यदि नहीं, मैं rebase है।)

रिबेस हालांकि नहीं है मूर्ख प्रूफ, तो विलय पसंदीदा "सुरक्षित" है कार्रवाई, लेकिन यह इतिहास में और अधिक "कचरा" छोड़ देता है। एक व्यापर।

रीबेज बोग मानक एसवीएन अपडेट की तरह है। मौजूदा सामान बेसलाइन बना दिया गया है और आपके परिवर्तन शीर्ष पर जाते हैं, अपनी उंगलियों को पार करते हैं, यह अभी भी काम करता है। यह उपयोगी है, लेकिन ऐसे समय होते हैं जब आप अपने, अपने और विलय को इतिहास में अलग-अलग काम करते हुए सुरक्षित महसूस करते हैं।

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

+0

ठीक है, तो यह आधार से बाहर नहीं है। मैं थोड़ी सोच रहा था कि क्या हर कोई एक केंद्रीय रखरखाव करने के लिए पैच-ईमेल कर रहा था या क्या नहीं, लेकिन आप जो रेपो जोड़ रहे हैं, वह मुझे एक ही चीज़ दिखाता है। अच्छा। अगला स्टॉप हमारी वेबसाइट के रूप में किल (फोगक्रीक से) का मूल्यांकन करना है, इसकी इलेक्ट्रिक डीएजी के साथ यह देखना आसान होना चाहिए कि कौन सा अन्य योगदान करता है, जो पुराने इतिहास को उपयोग करने में आसान बनाता है। –

+0

इलेक्ट्रिक डीएजी के बारे में नहीं पता था। और अधिक देखेंगे। ग्राफ़ डिस्प्ले में सुधार के बारे में http://stackoverflow.com/questions/3879856/is-there-any-way-to-change-how-graphs-are-represented-in-mercurial भी देखें। – Macke

+0

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

6

मेरे पास 12 डेवलपर काम पर उसी मर्कुरियल रिपोजिटरी में काम कर रहे हैं, और हमारा इतिहास ऐसा कुछ नहीं दिखता है। कभी-कभार विलय होता है, लेकिन अधिकांश विलय वास्तविक शाखाओं में विलय करने से होते हैं, यानी हमारे मुख्य विकास शाखा में एक विलय हो सकता है जो उत्पादन/रिलीज शाखा पर किए गए बगफिक्स रिलीज से परिवर्तन लाता है।

यह हासिल करना बहुत आसान है, डेवलपर्स हैक और अपने स्थानीय भंडार को प्रतिबद्ध करते हैं और जब उनके पास शेष टीम के साथ साझा करने के लिए पर्याप्त स्थिर होता है।

यदि कुछ भी नहीं किया गया है, तो पुश करने से शुरू होने के बाद कुछ भी समस्या नहीं हुई है।

अगर किसी और ने कोई बदलाव किया है, तो Mercurial शिकायत करता है कि पुश दूरस्थ सिर बनाएगा। डेवलपर तब hg pull --rebase करता है और पुश को पुनः प्रयास करता है। धक्का गुजरता है और हर कोई खुश है।

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

+0

"रीबेस", उसमें देखना चाहिए। –

+4

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

+0

यदि अन्य 'एचजी रीबेस' की तलाश में हैं: http://mercurial.selenic.com/wiki/RebaseExtension –

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