2010-03-02 14 views
5

मुझे लगता है कि मैं अपनी स्थिति को बेहतर ढंग से समझाऊंगा:2-संस्करण सॉफ्टवेयर: सर्वश्रेष्ठ वीसीएस दृष्टिकोण?

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

मेरा वर्तमान दृष्टिकोण मेरी मूल परियोजना के गिट रेपो को क्लोन करना है, लेकिन इससे पैकेज नामों के साथ समस्याएं उत्पन्न होती हैं। मैं चाहता हूं कि सिस्टम पर्याप्त मजबूत हो ताकि एक शाखा पर एक बगफिक्स/नई सुविधा दूसरी शाखा में विलय हो, लेकिन केवल जब मैं इसे चाहूं।

क्या किसी के पास कोई सुझाव है?

+1

मुझे लगता है कि आप VCS (संस्करण नियंत्रण प्रणाली) का मतलब है, नहीं सीएमएस। –

+0

दंडित शब्दकोष! अपडेट किया गया। धन्यवाद –

+0

मैं एंड्रॉइड से परिचित नहीं हूं, लेकिन ऐसा लगता है कि एक प्लगइन आर्किटेक्चर मदद कर सकता है। आप जिन उत्पादों को शामिल करना चाहते हैं, उनके आधार पर आप अपने उत्पाद को प्लगइन के विभिन्न सेटों के साथ भेज सकते हैं। – DanJ

उत्तर

3

मैं एक सशुल्क ऐप और परीक्षण संस्करण के लिए उस सटीक मामले को संभालता हूं जिसमें एक ही कोडबेस है। मैं एसवीएन का उपयोग कर रहा हूं, लेकिन ब्रांचिंग का समर्थन करने वाला कोई संस्करण नियंत्रण सॉफ्टवेयर काम करेगा।

मैंने ट्रंक से परीक्षण संस्करण के लिए एक शाखा बनाई है।

फिर मैंने परीक्षण नाम बदलने के लिए परीक्षण verion के AndroidManifest.xml को संशोधित किया, अंत में .trial जोड़ना। मुझे फिर सही आर कक्षा के संदर्भ में सभी गतिविधियों जावा फाइलों को अद्यतन करना पड़ा।

मेरे सशुल्क ऐप्लिकेशन पैकेज com.hewittsoft.baby
मेरे परीक्षण एप्लिकेशन पैकेज com.hewittsoft.baby.trial

परीक्षण मैं शाखा पर मेरी गतिविधियों में है मैं इस

import com.hewittsoft.baby.trial.R; 

करना और यह R.id.textField (या जो कुछ भी) काम करने के लिए किसी भी संदर्भ का कारण बनता है।

मैंने उन चरणों के बाद मुख्य शाखा पर विकसित किया और फिर बिना किसी दर्द के परीक्षण संस्करण में किसी भी बदलाव को विलय कर दिया।

+0

आप अलग-अलग फ़ाइल संरचनाओं से कैसे निपटते हैं (यानी: Launch.java एक/src/com/hewittsoft/baby/में/और src/com/hewittsoft/baby/trial/में दूसरे में है)? –

+0

मेरे पास एक अलग फ़ाइल संरचना नहीं है। सभी गतिविधियां और सहायक कोड अभी भी/src/com/hewittsoft/baby/में हैं, और AndroidManifest.xml अभी भी उन्हें इंगित करता है, जैसे: <गतिविधि एंड्रॉइड: name = "com.hewittsoft.baby.WelcomeActivity" एंड्रॉइड : लेबल = "@ स्ट्रिंग/एप_नाम"> मेरे पास कॉम/हेविट्सॉफ्ट/बेबी/ट्रायल पैकेज है लेकिन इसमें केवल परीक्षण के लिए विशिष्ट कोड है (परीक्षण की अवधि समाप्त होने पर जांचना आदि) – dweebo

+0

ठीक है, धन्यवाद। मुझे लगता है कि मैं आपकी विधि का उपयोग करूँगा। –

3

यदि एकमात्र मुद्दा एक पैकेजिंग और रिलीज प्रबंधन समस्या है, तो आप एक गिट रेपो के भीतर इतिहासकरण चक्र से उन चरणों को अलग कर सकते हैं (पैकेज का नाम बदलें, और लक्षित वातावरण में इसका परीक्षण करें)।

तो आप आगे बढ़ सकते हैं, अपने विकास को अलग कर सकते हैं, प्रति शाखा एक सुविधा, दोनों के लिए समान पैकेज नाम रखने के लिए (एक से दूसरे में आसानी से फिक्स को आसानी से मर्ज करने के लिए)।
लेकिन फिर, उन दो संस्करणों में से किसी एक का परीक्षण और तैनाती करने के लिए, आप संकुल, पुन: कंपाइलिंग, पैकेजिंग (जार) का नाम बदलने और लक्ष्य परीक्षण वातावरण में परिणाम तैनात करने के प्रभारी स्क्रिप्ट प्राप्त कर सकते हैं।

+0

एक अच्छी योजना की तरह लगता है। –

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