2012-09-04 14 views
5

के लिए सर्वश्रेष्ठ प्रैटिस मेरी कंपनी में हमारे पास एक मूल सॉफ़्टवेयर है जो प्रत्येक क्लाइंट के लिए अनुकूलित हो जाता है। आज एसवीएन का उपयोग करते हुए हमारे पास एक सेटअप है:एकाधिक कस्टम प्रोजेक्ट्स और गिट

/trunk 
/tags 
    … 
/branches 
    /client_project_x 
    /client_project_y 
    /client_project_z 

गिट में इसे व्यवस्थित करने का सबसे अच्छा तरीका कैसे होगा? प्रत्येक प्रोजेक्ट के लिए रिमोट रिपोजिटरी है और बेस कोड के लिए एक है या कई शाखाओं के साथ एक बड़ा रिमोट रेपो है?

यदि हम कई शाखाओं के साथ एक बड़े रिमोट रेपो का उपयोग करते हैं, तो रिमोट रिपोजिटरी से केवल एक शाखा क्लोन करने का एक तरीका है?

उत्तर

2

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

दूसरे शब्दों में, इसे जिस तरह से विकास और परीक्षण टीमों के लिए आसान बनाता है, इसे सेट करें।

+0

कैसे चुनें कि मैं कौन सी शाखाएं क्लोन करना चाहता हूं? –

+0

देखो [यहां] (http: // stackoverflow।com/प्रश्न/4811434/Git क्लोन-केवल-एक शाखा)। –

1

अलग-अलग परियोजनाएं अलग-अलग भंडारों में होनी चाहिए।

(या तो एक बड़ा पेड़ में या अलग शाखाओं में एक भी भंडार में परियोजनाओं ऐसा नहीं है कि Git के साथ के रूप में सरल है कोई लाभ और असंबंधित के बहुत सारे रखने के लिए संभावित नुकसान के बहुत सारे है -। - या शिथिल संबंधित।)

+0

एक नया रिमोट रेपो बनाने के लिए आसान तरीके से एकाधिक स्वयं होस्टेड रिपो को प्रबंधित करने के तरीके पर कोई सुझाव? –

+0

@ मार्कोपोम्पेई: उपयुक्त रूप से सुलभ स्थान पर 'गिट इनिट - बेयर' एक "केंद्रीय" साझा भंडार बनाने का सबसे आसान तरीका है। –

0

गिट का जन्म शाखाओं/मर्ज शाखाओं को इतना आसान बनाने के लिए हुआ था, इसलिए बस नई सुविधाओं के लिए शाखाओं के रूप में बनाएं, कार्यशीलताओं का परीक्षण करें, बाकी कंपनी को प्रभावित किए बिना उप-टीम के साथ काम करें! उदाहरण के लिए लिनक्स में हजारों शाखाएं हैं, और वे बढ़ रहे हैं!

लिनस टोरवाल्ड्स के लिए this video देखें, जो आपको गिट विकसित करते समय "दिमाग" मानों को समझने में बहुत मदद करेगा।

0

मैं कई रेपोस का उपयोग करें:

मूल है एक भंडार में, प्रत्येक प्लगइन और प्रत्येक ग्राहक के लिए अपने स्वयं के भंडार है:

  • modwork (कोर)
  • modwork_foo (क्लाइंट "foo के लिए विन्यास ")
  • modwork_app1 (ऐप जो कई ग्राहकों के लिए स्थापित किया जा सकता)

नहीं कोर में एकल फ़ाइल स्थापित या निर्माण प्रक्रिया के दौरान संशोधित हो जाती है। प्रत्येक ग्राहक के पास एक ही कोर होता है। कोर में कस्टम तरीकों के लिए हुक शामिल हैं।

मैं ग्राहकों के लिए शाखाओं में कोर में फ़ाइलों को संशोधित करना पसंद नहीं करता हूं। मुझे लगता है कि यदि आपके पास 5 से अधिक ग्राहक हैं तो यह मुश्किल हो जाता है।