2010-03-02 11 views
24

के लिए अनुशंसित Mercurial भंडार/फ़ोल्डर संरचना मैं एसवीएन से दूर जाने के लिए एचजी के साथ प्रयोग कर रहा हूं, लेकिन मुझे कुछ हद तक चाहिए कि मुझे अपने एचजी भंडार को कैसे ढूढ़ना चाहिए।एक एसवीएन उपयोगकर्ता

Project1 
    trunk 
    branches 
    1.0 
    1.1 
Project2 
    trunk 

आदि यह 'पारंपरिक तरीका एक संरचना करने के प्रतीत हो रहा है: मैं एक SVN पृष्ठभूमि (! जो कि यह कैसे काम करना चाहिए पर अपने दृष्टिकोण दागी के हो सकते हैं) और मेरे भंडार वर्तमान में कुछ इस तरह दिखता से आते हैं एसवीएन भंडार।

मुझे इसे एचजी के साथ कैसे पुन: पेश करना चाहिए? इसे थोड़ा मसाला देने के लिए मुझे 'स्थिर', 'क्यू' और 'देव' भंडार/फ़ोल्डर्स के विचार पसंद हैं और यदि संभव हो तो इसे पेश करना चाहते हैं।

मैं एक एचजी शुरुआती हूं इसलिए किसी भी मदद या सलाह का स्वागत है।

उत्तर

26

वहाँ एक सबवर्सन (SVN) और मर्क्युरियल (HG) भंडार है, या रेपो छोटे के लिए के बीच कई बुनियादी फर्क कर रहे हैं, का अर्थ है आप कैसे "डिजाइन" अपने पदानुक्रम होगी:

    , क्योंकि आप हमेशा पूरे भंडार क्लोन करने के लिए है, एक भी भंडार में कई परियोजना होने धक्का/खींच संचालन पर और साथ ही क्लोनिंग समय पर एक बड़ा प्रभाव हो सकता है के रूप में:
  • मर्क्युरियल भंडार में केवल एक परियोजना के साथ बेहतर काम करता है आपको अपने काम की तुलना में अन्य परियोजनाओं पर किए गए सभी कामों को सिंक्रनाइज़ करना होगा हर बार।
  • एसवीएन में टैगिंग/ब्रांचिंग की "मजबूत" धारणा नहीं है, जबकि Mercurial करता है: एसवीएन (लेखन के समय) में, प्रत्येक शाखा, प्रत्येक टैग मूल रूप से किसी दिए गए प्रोजेक्ट/फ़ोल्डर/जो कुछ। अनुशंसित trunk/branches/tags संरचना आपकी "प्रतियां" वापस खोजने में आपकी सहायता करने के लिए है, और नहीं। दूसरी ओर, शाखाओं और टैग अच्छी तरह से Mercurial में परिभाषित हैं। एक टैग वास्तव में एक नाम है जिसे आपने एक विशेष संशोधन पर रखा है, और आप सभी मौजूदा टैग के लिए पूछ सकते हैं। शाखाओं के लिए, आप देखेंगे कि MANY ways उन्हें संभालने के लिए हैं, लेकिन जो एसवीएन दर्शन के लिए सबसे अच्छा फिट बैठता है, उसे शाखाएं नामित किया जाता है।
इसे ध्यान में रखते

, और स्थिर, गुणवत्ता आश्वासन (क्यूए), और विकास (देव) प्रक्रिया के आप विचार के साथ यह युग्मन, यहाँ मैं क्या सिफारिश करेंगे है:

  • एक रिपोजिटरी नाम " स्थिर "प्रति परियोजना।प्रति परियोजना कई "क्यूए" रिपोज़ और प्रति परियोजना "देव" के टन।
  • टैग और नाम शाखाएं केवल "स्थिर" रेपो द्वारा परिभाषित की जाती हैं, या अंततः "क्यूए" द्वारा परिभाषित की जाती हैं। "देव" repos उन्हें चोट के बिना अलग-अलग संभाल सकता है।
  • आप कभी भी "क्यूए" या "स्थिर" रेपो को धक्का नहीं देते हैं, वे खींचते हैं, या वे बंडल या पैच को एकीकृत करते हैं, और प्रत्येक व्यक्ति के लिए जिम्मेदार एक व्यक्ति होता है।

उदाहरण: MyProject-1,0

[STABLE Repository, pulls from any/all QA] 
    - MyProject-1.0 

[QA Repositories, branched from STABLE, pulls from any/all DEV ] 
    - QA_MyProject-001 (Person A) 
    - QA_MyProject-002 (Person B) 
    - QA_MyProject-003 (Person C) 
      ... 
    - QA_MyProject-### (Person #) 

[DEV Repositories, branched from STABLE or QA] 
    - DEV_MyProject-001 (Feature X) 
    - DEV_MyProject-002 (Feature Y) 
    - DEV_MyProject-003 (Feature Z) 
      ... 
    - DEV_MyProject-### (Feature #) 

    1. DEV completes feature(s) 
    2. QA pulls feature(s) from DEV 
    3. STABLE pulls from all approved QA(s) (consolidating all changes) 
9

Mercurial वास्तव में अच्छी तरह से प्रलेखित है। आपको केवल यह जानना होगा कि विकी में कहां देखना है।

आप मर्क्युरियल के विकी लेख RepositoryNaming को देखने के अपने कुछ उत्तर प्राप्त कर सकते हैं। Mercurial: The Definitive Guide

गुड लक:

तुम भी आधिकारिक मर्क्युरियल मैनुअल पढ़ना चाहिए!

19

लेकिन इससे पहले कि आप इसे करें - इसे देखें: hginit.com - यह एक ½ घंटे पढ़ा गया है, और इसमें svn-users के लिए एक अनुभाग है।

मुझे बहुत समझदार बना दिया है, और मैं छोड़ने/ट्रंक/टैग संरचना पर फैसला किया है, और एक अलग ढंग से तेज का उपयोग करें। अब मेरे पास प्रत्येक प्रोजेक्ट के लिए एक भंडार है, जिसमें केवल प्रोजेक्ट की संरचना है, और मैं Mercurial टैग कमांड का उपयोग कर टैग करता हूं।

.Jesper हाउगे

+0

मैं प्रति-परियोजना के लिए एक अलग भंडार का विचार पसंद। – Rob

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