2012-06-22 23 views
5

मेरी कंपनी तर्कसंगत ClearCase से गिट तक हमारे संस्करण नियंत्रण उपकरण को बदलने की प्रक्रिया में है। हमारे पास निम्नलिखित विकास परिदृश्य है, और अगर हम क्लीयरकेस में हमारे समान व्यवहार को प्राप्त करने के लिए गिट के साथ पालन करने के लिए उचित पैटर्न रखते हैं तो हम उत्सुक हैं।क्लीयरकेस में केवल पढ़ने के लिए घटक के लिए गिट में समतुल्य क्या है?

यहाँ हमारे स्थिति के बारे में कुछ बुनियादी बिंदु हैं:

  1. हम असतत आवेदनों की एक संख्या है। आइए इन एपीए, एपीबी, और एपीसी को कॉल करें।
  2. हम भी कुछ फ़ाइलों (, लिपियों का निर्माण आदि) कि सभी परियोजनाओं के लिए आम हैं की है। आइए इन टूल्स को कॉल करें।
  3. अप्पा, AppB, या APPC कोड के किसी भी कटौती के लिए, हम उपकरण कोड की एक विशिष्ट कटौती की जरूरत है।
  4. हमारे अधिकांश डेवलपर टूल कोड को कभी भी संशोधित नहीं करते हैं।

ClearCase के लिए, हम इस तरह इस मॉडल किया है:

घटक: app_a, app_b, app_c, उपकरण

परियोजनाएं: अप्पा, AppB, APPC, उपकरण

प्रोजेक्ट ऐपए में पढ़ने-लिखने वाले घटक के रूप में एप_ए को पढ़ने/लिखने वाले घटक और टूल के रूप में शामिल किया गया है।

परियोजना AppB एक पढ़ा/घटक और उपकरणों केवल-पढ़ने के घटक के रूप में लिखने के रूप में app_b भी शामिल है।

परियोजना APPC एक पढ़ा/घटक और उपकरणों केवल-पढ़ने के घटक के रूप में लिखने के रूप में app_c भी शामिल है।

परियोजना उपकरण पढ़ने/लिखने घटक के रूप में उपकरण शामिल हैं।

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

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

उत्तर

4

सबसे पहले, साफ़कैस और गिट में एक (यूसीएम-जैसी) कॉन्फ़िगरेशन के बीच अंतर को समझना सुनिश्चित करें (देखें "Flexible vs static branching (GIT vs Clearcase/Accurev)")।
differences between ClearCase and Git को देखते समय, प्रत्येक यूसीएम घटकों को गिट में एक भंडार के रूप में प्रदर्शित किया जाना चाहिए।

"true nature of submodules" में वर्णित अनुसार, संशोधित होने पर Submodules को एक अतिरिक्त चरण की आवश्यकता होती है।
लेकिन वे एक विशिष्ट SHA1 रिकॉर्ड करते हैं, जो आप चाहते हैं कि जब आप प्रत्येक 'APP' खींच रहे हों।
gitslave आपको Tools को Appx 'से अधिक कसकर जोड़ने की अनुमति देगा, लेकिन मुझे नहीं लगता कि यह आपके परिदृश्य को फिट करता है।

ध्यान दें कि submodules का उपयोग कर लूंगा:

  • मेकअप 'Tools' एक 'APPx'
  • की उप-निर्देशिका यह परिवर्तनीय हैं।
    गिट के साथ कोई "केवल-पढ़ने" घटक नहीं है: यदि आप रेपो तक पहुंच सकते हैं, तो आप पुश/पुल कर सकते हैं।
    यदि आपको वास्तव में पढ़ने-पहुंच को लागू करने की आवश्यकता है, तो आपको gitolite नामक अतिरिक्त "प्राधिकरण परत" जोड़ने की आवश्यकता है।