परियोजना के लिए गिट रिपोजिटरी की संरचना कैसे करें?


9

मैं Drupal के लिए एक सामग्री सिंक्रनाइज़ेशन मॉड्यूल पर काम कर रहा हूं। एक सर्वर मॉड्यूल है, जो ओना वेबसाइट पर बैठता है और एक वेब सेवा के माध्यम से सामग्री को उजागर करता है। एक क्लाइंट मॉड्यूल भी है, जो एक अलग साइट पर बैठता है और नियमित अंतराल पर सामग्री को लाता और आयात करता है।

सर्वर Drupal 6 पर बनाया गया है। क्लाइंट Drupal 7 पर बनाया गया है। सर्वर के Druapl 7 संस्करण की आवश्यकता होने वाली है। और फिर अगले वर्ष जारी होने के बाद क्लाइंट और सर्वर दोनों के एक Drupal 8 संस्करण की आवश्यकता होगी।

मैं गिट और स्रोत नियंत्रण के लिए काफी नया हूं, इसलिए मैं सोच रहा था कि गिट रिपॉजिटरी को सेटअप करने का सबसे अच्छा तरीका क्या है? क्या यह प्रत्येक उदाहरण के लिए एक अलग भंडार होने का मामला होगा, अर्थात:

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

या फिर सर्वर के लिए एक रिपॉजिटरी और क्लाइंट के लिए एक और ड्रुपल वर्जन के लिए ब्रांच बनाना ज्यादा मायने रखेगा?

वर्तमान में मेरे पास 2 रिपॉजिटरी हैं - एक क्लाइंट के लिए और दूसरा सर्वर के लिए।

जवाबों:


7

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

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

इसके अलावा, आप हमेशा कई रिपॉजिटरी में जा सकते हैं: बस रेपो को क्लोन करें और उन शाखाओं को हटा दें जिन्हें आप नहीं चाहते हैं। दूसरे रास्ते पर जाना कठिन है।

यदि सर्वर और क्लाइंट कुछ भी साझा नहीं करते हैं या यदि कोड वास्तव में बहुत बड़ा है, तो मैं कई रिपोज के लिए जाऊंगा।


यह वह तरीका है जो मैं जाने वाला हूं क्योंकि ड्रुपल विभिन्न संस्करणों को शाखाओं के रूप में संग्रहीत करता है। मैं +1 भी चाहता हूं, लेकिन 15 प्रतिनिधि चाहिए!
littledynamo

4

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

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

मैं Drupal के बारे में ज्यादा नहीं जानता और संस्करणों के बीच अंतर कितना मजबूत है। इसलिए अलग-अलग रिपोज को प्राथमिकता देने की मेरी बात रेल के साथ मेरे अनुभव पर आधारित है। संस्करणों के बीच कभी-कभी चीजों में बड़े अंतर होते हैं जैसे फाइलें कैसे होती हैं या फ़ोल्डर संरचना (जैसे परिसंपत्ति पाइपलाइन) जो एक नया रेपो बनाने के लिए अधिक आरामदायक बनाती है। Drupal (या किसी भी अन्य ढांचे) में कम अंतर हो सकता है, तो मौजूदा रेपो के भीतर बस जाना ठीक होगा।


1
धन्यवाद। यह दिलचस्प है क्योंकि मैंने अभी पता लगाया है कि ड्रूपल कोर मॉड्यूल अलग-अलग संस्करणों को शाखाओं के रूप में संग्रहीत करते हैं। मुझे लगता है कि यह मेरे लिए उस संरचना की नकल करने के लिए समझ में आता है। मैं +1 करूँगा लेकिन 15 प्रतिनिधि चाहिए!
littledynamo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.