git - क्या कलाकार एक ओपन सोर्स वातावरण में वास्तविकता(वितरित) संस्करण नियंत्रण से सामना कर सकते हैं?




open-source mercurial (4)

हेया, मैं एक ओपन सोर्स गेम के प्रोजेक्ट मैनेजमेंट डिपार्टमेंट में काम कर रहा हूं। अभी हम एक ही भंडार में संस्करण नियंत्रण और स्टोर कोड और परिसंपत्तियों के लिए एसवीएन का उपयोग कर रहे हैं। परिसंपत्तियों के स्रोत संस्करण (मॉडल, बनावट) एक अलग मीडिया शाखा में रहते हैं, जबकि परिसंपत्तियों के रेंडर संस्करण (हम एक isometric 2d गेम पर काम कर रहे हैं, इसलिए हम वास्तव में गेम में 3 डी मॉडल के 2 डी चित्रों का उपयोग करते हैं) रहते हैं कोड के करीब, क्योंकि उन्हें गेम चलाने के लिए जगह में होना आवश्यक है

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

जबकि वितरित संस्करण नियंत्रण डेवलपर्स के लिए एक तकनीकी पृष्ठभूमि के साथ बहुत अच्छा है, यह कलाकार और अन्य मूल्यवान तकनीकी तकनीकों के लिए अत्यधिक जटिल और जटिल लग सकता है

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

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

वहाँ महान DVCS गाइड का एक गुच्छा है, जैसे Hginit ट्यूटोरियल । हालांकि जिन लोगों को मैंने पाया है वे सभी प्रोग्रामर के लिए लिखे गए हैं यह बहुत अच्छा है कि अब वे आसानी से स्थानीय रूप से प्रतिबद्ध हो सकते हैं, शाखाओं की पूर्ण क्षमता का उपयोग कर सकते हैं और बिना परेशानी के अपने परिवर्तनों को वापस मर्ज कर सकते हैं। लेकिन यह कलाकारों के लिए फायदेमंद नहीं हो सकता है बल्कि उनके लिए अत्यधिक जटिल और डरावना है। क्या आपको एक डीवीसीएस ट्यूटोरियल पता है जो कलाकारों के लिए प्राथमिक लक्ष्य दर्शकों के रूप में लिखा गया था?

हम परियोजना प्रबंधन के प्रयोजनों के लिए ट्रेक का उपयोग भी कर रहे हैं, इसलिए यदि आप ट्रैक प्लगइन के बारे में जानते हैं जो कलाकार के अनुकूल है, तो मुझे इसके साथ-साथ पता करें :-)


निम्नलिखित संस्करण नियंत्रण और मर्कुरियल के लिए अच्छा दृश्य परिचय हैं

देखने की कोशिश करें, अगर यह समझने में आसान हो जाता है। मुझे कुछ का उपयोग करना बहुत कठिन होगा, जिसे मैं अपने सिर में लपेट नहीं कर सकता।

तो यहाँ कुछ अच्छे दृश्य परिचय हैं:

गिट एक अधिक विस्तृत मॉडल को उजागर करता है, जिसे कई प्रोग्रामर ने पसंद किया है। Mercurial से निपटने के लिए अवधारणाओं का एक अधिक स्वच्छ और छोटे सबसेट प्रदान करता है। मेरा मानना ​​है कि आपके उद्देश्य के लिए मर्कूरियल अधिक उपयुक्त होगा।


मुझे यह भी यकीन नहीं है कि प्रोग्रामर वितरित संस्करण नियंत्रण से वास्तविक रूप से सामना कर सकते हैं। सबूत के लिए, मैं स्टैक ओवरफ़्लो पर वितरित संस्करण नियंत्रण प्रश्नों की संख्या प्रदान करता हूं।

मेरा सुझाव कलाकारों को दो चेकलिस्ट देना होगा या धोखा पत्रक देना होगा एक कला काम करने के लिए, और कला का काम पुनः प्राप्त करने के लिए। ये चीट शीट आपके काम के वातावरण के लिए विशिष्ट होंगे।

अगर कोई कलाकार स्रोत नियंत्रण के बारे में समझना चाहता है, तो प्रोग्रामर में से एक विवरणों को समझा सकता है।

यह मेरा अनुभव रहा है कि ज्यादातर लोग अपना काम करना चाहते हैं, और इसके बारे में क्या परवाह नहीं करते वे बस कैसे देखभाल के बारे में परवाह है


चंचलता के साथ, आपके पास कलाकारों को सबवर्जन के साथ जारी रखने का विकल्प होता है, जबकि डेवलपर्स को मर्क्यूरिअल पर स्विच करना पड़ता है और इस तरह वितरित संशोधन नियंत्रण के लाभों का आनंद मिलता है।

ट्रिक एक सबवर्जन सबरेपोस्पिटरी का मर्कुरियल में उपयोग करना है मौसमी आपको घोंसले के खजाने की सुविधा देता है: Mercurial 1.7 में मर्क्यूरीयल और सबवर्जन सब्रेपोजिटरीज़ के लिए समर्थन दिया गया है, Mercurial 1.8 को Git subrepositories के लिए समर्थन मिलेगा।

आप .hgsub नामक फ़ाइल के माध्यम से एक सबरेपो को नियंत्रित कर .hgsub । आपके मामले में आप इस तरह से फ़ाइल में कुछ जोड़ेंगे:

graphics/rendered = [svn]http://svn.example.org/graphics/rendered

यह http://svn.example.org/graphics/rendered एक svn checkout बनाने के लिए मर्कुरियल को निर्देश देता है और चेकआउट को अपने मर्क्यूरीयल काम की प्रतिलिपि में graphics/rendered जाता है। दूसरे शब्दों में, .hgsub फ़ाइल का प्रारूप है

mount-point = [type]source-URL

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

जब एक और डेवलपर Mercurial रिपॉजिटरी का एक क्लोन बनाता है, Mercurial .hgsub और .hgsubstate फ़ाइलों को नोटिस करेगा, और उन .hgsubstate चेकआउट को दुबारा बनाने के लिए उपयोग करें।

इस समाधान के फायदे हैं:

  1. कलाकार सबवर्सन के साथ काम करना जारी रख सकते हैं। यहाँ मैं यह मान कर थोड़ा सा सरल बना रहा हूं कि वे बाहरी ग्राफिक रिपॉजिटरी क्लोनिंग के बिना अलगाव में अपने ग्राफिक्स फ़ाइलों के साथ काम कर सकते हैं। यहां तक ​​कि अगर यह सच नहीं है, तो वे सबवर्सन का उपयोग करते हुए अपने अधिकांश काम भी कर सकते हैं और केवल हाल ही में मौलिक परिवर्तन प्राप्त करने के लिए कुछ समय में hg pull --update करें।

  2. डेवलपर्स को सभी ग्राफिक्स फ़ाइलों के सभी संशोधन डाउनलोड करने के लिए अभ्यस्त होगा। यह बड़ी बाइनरी फ़ाइलों के बारे में बात करते समय (कोई भी) वितरित संशोधन नियंत्रण प्रणाली के लिए शो-स्टॉपर होता है

    समस्या यह है कि केंद्रीकृत संशोधन नियंत्रण के साथ, यह केवल सर्वर है जिसे किसी दिए गए फ़ाइल के सभी संस्करणों को संग्रहित करने की आवश्यकता होती है, लेकिन वितरित संशोधन नियंत्रण के साथ हर डेवलपर प्रत्येक संस्करण को संग्रहीत करता है

    बाइनरी परिसंपत्तियों को एक उपवर्सन उपप्रो में इस समस्या के पक्ष-कदम में बाँटते हुए।

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

$ cd graphics/rendered
$ svn update
$ cd ../..
$ # test new graphics!
$ hg commit -m 'Updated graphics'

मर्कुरियल कमिट .hgsubstate फ़ाइल में नया सबवर्सन संशोधन नंबर .hgsubstate है - Mercurial फाइल में नंबर डालने का ख्याल रखेगा, डेवलपर्स को इसे करना होगा इस तरह, प्रत्येक मर्कुरियल .hgsubstate फ़ाइल के माध्यम से एक विशेष सबवर्सन संशोधन का संदर्भ देगा, और इसलिए आप किसी भी पिछले राज्य (स्रोत कोड और ग्राफिक्स से मिलकर) को सही ढंग से पुन: निर्मित कर सकते हैं


हमने GIT के साथ गेम पर काम करने वाले कलाकार हैं हमारे लिए SmartGIT क्लाइंट आवश्यक है

यह एसवीएन स्वाद में भी आता है।

लिंक http://www.syntevo.com/smartgit/index.html





dvcs