2009-09-23 14 views
5

के लिए एक सुझाव की तलाश में है, मैं गिट रिपॉजिटरीज और शाखाओं का उपयोग करके परियोजनाओं को कैसे व्यवस्थित करने के सुझावों की तलाश में हूं।गिट वेबसाइट रिपोजिटरी/शाखा संरचना

मान लें कि मुझे रिमोट रिपोजिटरी चाहिए, और मेरी परियोजना एक ऐसी वेबसाइट है जो फ्लैश विजेट का उपयोग करती है। फ्लैश विजेट को मैंने जो स्रोत कोड लिखा है उससे संकलित किया गया है।

मेरी वेबसाइट को तैनात करने के लिए, मैं उत्पादन सर्वर को रिमोट रिपोजिटरी से खींचने वाला एक और गिट क्लाइंट बनना चाहता हूं, लेकिन मैं नहीं चाहता कि फ़्लैश विजेट के लिए स्रोत कोड मेरे उत्पादन सर्वर की कार्यशील प्रति में हो।

मैं ऐसा "मास्टर" शाखा बनाकर कर सकता हूं जिसमें src/और www/और "www" शाखा दोनों शामिल हैं जिनमें केवल "www /" है। लेकिन फिर मेरी देव टीम को www शाखा में वेबसाइट से संबंधित परिवर्तनों की जांच करने की याद रखने की आवश्यकता है, और फ्लैश स्रोत कोड मास्टर में बदल जाता है।

तो दो प्रश्न: यह समाधान आपकी अपनी परियोजनाओं की तुलना कैसे करता है? और, क्या आपने पाया है कि आपकी टीमों में आपके डेवलपर्स मुश्किल से शाखाओं का ट्रैक रखते हैं, और आकस्मिक रूप से परिवर्तन कर रहे हैं और एक शाखा में एक शाखा में होना चाहिए?

उत्तर

4

उत्पादन सर्वर पर गिट रेपो की एक प्रति रखने के लिए मेरी निजी वरीयता नहीं है। मेरी वेबसाइट को तैनात करने के लिए, मैं एक तैनाती स्क्रिप्ट का उपयोग करता हूं जो रेपो की "गिट-कम" प्रतिलिपि बनाने के लिए git archive का उपयोग करता है, जिसे तब एससीपी के माध्यम से उत्पादन सर्वर पर कॉपी किया जाता है। मैं इस प्रयोजन के लिए Python Fabric का उपयोग करता हूं, लेकिन कोई भी रूबी के रेक का उपयोग कर सकता है, या पूरी तरह से कुछ और।

तैनाती एक स्नैप है - मैं बस एक कमांड चलाता हूं और सबकुछ कॉपी हो जाता है और उत्पादन सर्वर पर स्थापित होता है।

+1

मैं सीधे रेपो से नहीं खींचने के साथ सहमत हूं। कोड को सिंक करने के लिए कहीं भी एक बिल्ड/तैनाती मशीन का उपयोग करें, किसी भी बिल्ड तत्वों को आवश्यक बनाएं, इसे पैक करें और इसे उत्पादन में वितरित करें। –

+0

यह एक अच्छा विचार, और कुछ विचार करने की तरह लगता है। लेकिन मैं अभी भी अपने रेपो में दोनों स्रोत/और www/निर्देशिका संग्रहीत कर रहा हूं। क्या आपके पास स्रोत और www के लिए अलग-अलग रिपोज़ हैं और गिट सबमिशन एक दूसरे के विकास के लिए है, या आप शाखाओं का उपयोग करते हैं? –

+0

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