2011-04-07 19 views
9

में स्रोत कोड और डेटा को साफ तरीके से कैसे प्रबंधित करें मैं एक सहयोगी वैज्ञानिक परियोजना पर काम कर रहा हूं जो कुछ हद तक पायथन स्क्रिप्ट (1 एम अधिकतम) और अपेक्षाकृत बड़े डेटासेट (1.5 जीबी) द्वारा बनाई गई है। डेटासेट्स पाइथन स्क्रिप्ट से कड़े से जुड़े हुए हैं क्योंकि डेटासेट स्वयं विज्ञान हैं और स्क्रिप्ट उनके लिए एक सरल इंटरफ़ेस हैं।रिपोजिटरी

मैं अपने स्रोत नियंत्रण उपकरण के रूप में Mercurial का उपयोग कर रहा हूं, लेकिन मैं भंडार को परिभाषित करने के लिए एक अच्छी तंत्र पर स्पष्ट नहीं हूं। तर्कसंगत रूप से इन्हें एक साथ बंडल करना समझ में आता है ताकि संग्रह को क्लोन करके आपको पूरा पैकेज मिल सके। दूसरी तरफ, मैं बड़ी मात्रा में डेटा से निपटने वाले स्रोत नियंत्रण उपकरण के बारे में चिंतित हूं।

क्या इसे संभालने के लिए एक साफ तंत्र है?

उत्तर

7

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

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

data = [svn]http://svn.some.edu/me/ourdata 

जो मर्क्युरियल बताता दाएँ हाथ की ओर URL से एक svn checkout बनाने के लिए और data के रूप में अपने मर्क्युरियल क्लोन में सबवर्सन काम कर प्रतिलिपि डाल करने के लिए के साथ एक .hgsub फ़ाइल होगा। Mercurial आपके लिए .hgsubstate नामक एक अतिरिक्त फ़ाइल बनाए रखेगा, जिसमें यह किसी दिए गए Mercurial परिवर्तन के लिए चेकआउट के लिए एसवीएन संशोधन संख्या रिकॉर्ड करता है। इस तरह सबवर्सन का उपयोग करके, आप केवल अपनी मशीन पर डेटा के नवीनतम संस्करण के साथ समाप्त हो जाते हैं, लेकिन Mercurial को पता चल जाएगा कि डेटा के पुराने संस्करणों को कैसे प्राप्त किया जाए। यदि आप इस मार्ग पर जाते हैं तो कृपया this guide to subrepositories देखें।

1

मेरा पहला झुकाव पाइथन स्क्रिप्ट को अपने स्वयं के भंडार में अलग करना है, लेकिन मुझे "सही" कॉल करने के लिए वास्तव में अधिक डोमेन जानकारी चाहिए।

एक ओर, यदि नए डेटासेट बनाए जाएंगे तो आप चाहते हैं कि उपकरण का एक कोर सेट उन सभी को संभालने में सक्षम हो, है ना? लेकिन मैं यह भी देख सकता हूं कि नए डेटासेट उन मामलों को कैसे पेश कर सकते हैं जिन्हें स्क्रिप्ट पहले से संभाला नहीं जा सकता था ... हालांकि ऐसा लगता है कि एक आदर्श दुनिया में आप स्क्रिप्ट चाहते हैं जो सामान्य तरीके से लिखे गए हैं ताकि वे भविष्य के डेटा और मौजूदा डेटासेट को संभाल सकें ??

+1

आम तौर पर वैज्ञानिक मेरे हाथों से बाहर प्रत्येक डेटासेट के लिए एक नया उपकरण रोल करते हैं। स्क्रिप्ट अपेक्षाकृत हल्की और कसकर प्रत्येक डेटासेट के quirks से जुड़ा हुआ है। किसी और के लिए डेटा एक्सचेंज प्रोटोकॉल को मजबूर करने के बजाय मेरे लिए एक छोटी लिपि को अनुकूलित करना मेरे लिए आसान है। – Rich

4

बड़ी बाइनरी फ़ाइलों के बारे में article on the official wiki है। लेकिन @ मार्टिन गिसलर का प्रस्ताव वास्तव में एक अच्छा नया विकल्प है।

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