2010-03-24 14 views
22

मेरी वर्तमान परियोजना 3 भागों में विभाजित है: वेबसाइट, डेस्कटॉप क्लाइंट, और किसी तृतीय पक्ष प्रोग्राम के लिए प्लग-इन। हमने मूल रूप से हमारे स्रोत नियंत्रण के लिए सबवर्जन के साथ शुरुआत की थी लेकिन Joel Spolsky's final post पढ़ने के बाद Mercurial को आजमाने का फैसला किया। ध्यान में रखते हुए हमने वास्तव में एसवीएन की अधिकांश संभावनाओं का उपयोग नहीं किया है, हमने कुछ बुनियादी विचारों के साथ ताजा शुरू करने का अनुमान लगाया है कि स्रोत नियंत्रण कैसे काम करता है इस संक्रमण को आसान बना देगा।मर्कुरियल टैगिंग/ब्रांचिंग रणनीति

हालांकि, हमारी प्रारंभिक भंडार स्थापित करने के बाद, हम इस तरह की परियोजना पर टैगिंग और ब्रांचिंग को कैसे काम करना चाहिए, इस बारे में खो गए हैं।

अनिवार्य रूप से, हम एक ही समय में इन सभी 3 भागों पर काम कर रहे हैं। हम एक रिलीज को 3 भागों का संयोजन होना चाहते हैं। वर्तमान में हम एक भंडार में काम कर रहे हैं।

प्लग-इन भाग के लिए, हमारे पास पहला पुनरावृत्ति समाप्त हुआ है जिसे हम प्लग-इन v0.1 के रूप में संदर्भित कर रहे हैं। दूसरे दो हिस्सों के पहले आधिकारिक निर्माण के लिए, हम उन्हें वेबसाइट v0.1 और डेस्कटॉप क्लाइंट v0.1 के रूप में भी संदर्भित करना चाहते हैं। जब सभी तीन भाग v0.1 पर होते हैं, तो हम एक पूर्ण परियोजना v0.1 चाहते हैं।

हमारी समस्या यह है कि हम यह सुनिश्चित नहीं कर रहे हैं कि एचजी भंडार में यह सब कैसे प्रबंधित करें। क्या इसे संभालने का सबसे अच्छा तरीका 3 स्थिर संस्करणों के लिए 3 अलग-अलग भंडार बनाना और फिर वर्तमान विकास के लिए 3 और भंडार बनाना होगा? वर्तमान में हमारे पास यह सब एक भंडार में है। क्या हमें शाखाओं में ऐसा करना चाहिए (क्या शाखाएं क्लोनिंग रिपोजिटरी से अलग हैं?) और टैग?

किसी भी मदद की बहुत सराहना की जाती है।

+0

मैंने हाल ही में एचजी पर विचार करना शुरू कर दिया है और ये मूल रूप से मेरे प्रश्नों की एक ही पंक्ति थी। –

उत्तर

8

यह निश्चित रूप से लगता है कि आप 3 भागों के लिए अलग-अलग रिपोज़ चाहते हैं, अगर आपको रिलीज में 3 को एक साथ जोड़ना होगा तो यह 3 रिपॉजिटरीज़ एक समग्र प्रोजेक्ट रिपोजिटरी के subrepos होने के लिए भी उपयोगी हो सकता है।

0

Joel's Tutorial on Mercurial का उपयोग करने का प्रयास करें। इससे थोड़ा अधिक या इसका उपयोग कैसे किया जा सकता है। वास्तव में एसवीएन में उपयोग की जाने वाली "ब्रांचिंग" नहीं है और वास्तव में, यह मर्कुरियल का उपयोग करने की कोशिश करना बंद करना एक अच्छा विचार हो सकता है जैसे कि यह एसवीएन था। ब्रांचिंग के बजाय, आपके पास अपने स्थानीय रिपोजिटरीज हैं।

+2

प्रति शाखा एक नई भंडार शुरू करना Mercurial द्वारा समर्थित संभावनाओं में से केवल एक है। –

19

मैं स्टीव लोश के ब्लॉग एंट्री A Guide to Branching in Mercurial की अत्यधिक अनुशंसा करता हूं, जहां वह Mercurial द्वारा समर्थित शाखाओं के कई दृष्टिकोणों का वर्णन करता है।

Mercurial नाम की शाखाओं का उपयोग सुविधा शायद एसवीएन के साथ ब्रांचिंग के निकटतम मैच है।

5

आप उन्हें एक भंडार में रख सकते हैं या परियोजनाओं को अलग कर सकते हैं। मेरे लिए, यह इस बात पर निर्भर करेगा कि आवेदन के बीच कितना कोड, यदि कोई है, साझा किया जाता है। यदि घटक के बीच कोड साझा नहीं किया गया है, तो प्रत्येक के लिए एक अलग भंडार का उपयोग करें।

अलग-अलग भंडार आपको प्रत्येक घटक को संस्करण (v0.1) के साथ आसानी से टैग करने की अनुमति देगा और फिर आवश्यकतानुसार विकास के साथ आगे बढ़ेंगे। जब आप एक संयुक्त उत्पाद को रिलीज करने के लिए तैयार होते हैं, तो प्रत्येक रिपोजिटरी के लिए वांछित टैग से खींचें और आपको पूर्ण उत्पाद रिलीज मिल जाएगा। यदि आपके पास उस एप्लिकेशन के लिए डिलिवरेबल्स हैं जो तीन घटकों में से किसी से संबंधित नहीं हैं, तो आप उस डेटा को रखने के लिए संयुक्त उत्पाद के लिए एक संग्रह भी बना सकते हैं। आप शाखाओं या क्लोन भंडारों के माध्यम से प्रत्येक घटक के लिए शाखाकरण संभाल सकते हैं।

यदि आप घटकों को एक ही भंडार में रखते हैं, तो यह अभी भी काम करेगा लेकिन आपके टैग और शाखाएं बहुत गड़बड़ हो जाएंगी। जब प्लग-इन v0.1 हो जाता है, तो उसके लिए "प्लग-इन v0.1" जैसे टैग बनाएं। डेस्कटॉप और वेब क्लाइंट के लिए वही काम करें। फिर जब आप उत्पाद को रिलीज़ करना चाहते हैं, तो आपको तीन अलग-अलग टैगों से खींचने की आवश्यकता होगी जिनमें प्रत्येक घटक v0.1 पर होगा।

मैं अलग-अलग भंडारों का चयन करूंगा। यदि साझा कोड है तो निर्णय अधिक जटिल है लेकिन आप कोड के बजाए अपनी निर्भरताओं को पुस्तकालयों के रूप में लेने के तरीके ढूंढ सकते हैं।

ब्रांचिंग के बारे में आपके प्रश्नों के लिए, this article विभिन्न विकल्पों और पेशेवरों/विपक्ष के लिए एक अच्छी मार्गदर्शिका है।

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