मैं एक ब्रांड नई परियोजना पर कुछ समय के लिए एंटिटी फ्रेमवर्क कोड पहले माइग्रेशन का उपयोग कर रहा हूं, और वे एप्लिकेशन के मुख्य ट्रंक संस्करण पर अभी तक ठीक काम कर रहे हैं।इकाई फ्रेमवर्क माइग्रेशन - शाखाओं में प्रबंधन
हालांकि, अब हम इस परियोजना में एक बिंदु पर हैं जहां शाखाएं बनाई जा रही हैं क्योंकि हमारे पास कई वर्कस्ट्रीम चल रहे हैं। आखिरी काम के हिस्से के रूप में, हमने महसूस किया कि शाखाओं में माइग्रेशन का उपयोग समस्याग्रस्त हो सकता है - इसलिए मेरा सवाल यह है कि लोगों को इसका प्रबंधन करने का सबसे अच्छा तरीका क्या मिला है?
उदाहरण के लिए (मैं स्पष्ट रूप से इन चर्चा की खातिर सरल बना दिया है):
शाखा ए: डेवलपर 1 एक 'एड-UserDateCreated' माइग्रेशन जो उपयोगकर्ता संस्था के लिए एक क्षेत्र कहते हैं कहते हैं। माइग्रेशन फ़ाइल में फ़ील्ड जोड़ने के लिए कोड होता है, और उस समय मॉडल स्थिति होती है।
शाखा बी: डेवलपर 2 'एड-यूजर मिडलनाम' माइग्रेशन जोड़ता है जो उपयोगकर्ता इकाई में एक और फ़ील्ड जोड़ता है। माइग्रेशन फ़ाइल में फ़ील्ड जोड़ने के लिए कोड होता है, और उस समय मॉडल स्थिति होती है (लेकिन जाहिर है कि अन्य माइग्रेशन में फ़ील्ड जोड़ा नहीं गया है)।
ये प्रवास उनकी शाखाओं पर अच्छा काम है, लेकिन जब आप उन्हें वापस ट्रंक में विलय, आप अटक:
- तुम बस संग्रहीत मॉडल राज्य के रूप में अलग माइग्रेशन फ़ाइलों को रखना नहीं कर सकते नहीं सही हो उदाहरण के लिए, 'एड-यूजर मिडलनाम' माइग्रेशन में 'एड-यूजरडेटेडेटेड' फ़ील्ड के साथ मॉडल की स्थिति होनी चाहिए - लेकिन ऐसा नहीं होगा।
- आप एक फाइल में माइग्रेशन मर्ज नहीं कर सकते के रूप में आप एक ही मुद्दा मारा *
कौन सा एक ही तरीका है वास्तव में इन समस्याओं से बचने के लिए प्रत्येक शाखा के लिए डेटाबेस की एक अलग प्रतिलिपि पर काम करने का मतलब है, जब आप ट्रंक में विलय करते हैं तो माइग्रेशन को अनदेखा करते हैं, और मर्ज पूर्ण होने पर (एक डेटाबेस के ट्रंक संस्करण पर) एक शॉट मास्टर माइग्रेशन जोड़ते हैं - लेकिन फिर आप एक माइग्रेशन में कई बदलावों के साथ संभावित रूप से समाप्त होते हैं जो कभी नहीं होता है एक अच्छा विचार (और आपके माइग्रेशन क्लास में आपके द्वारा लिखे गए किसी भी कस्टम कोड को भी खो दें)।
तो अन्य लोग इस तरह की स्थितियों का प्रबंधन कैसे करते हैं? मैं अन्य लोगों की राय जानना उत्सुक हूं।
* मुझे उत्सुकता है कि वास्तव में असली दुनिया में क्या समस्याएं पैदा होंगी, अगर कोई जानता है?
धन्यवाद मार्टिन - यह करने का यह एक और उपयोगी तरीका है। मुझे लगता है कि मैंने पहले कभी इस तरह के बदलावों को विलय करने के बारे में सोचा नहीं था, आम तौर पर सभी परिवर्तनों को फिर से बनाने के लिए सभी माइग्रेशन को फिर से बनाने का विकल्प चुनते हैं जब सभी परिवर्तन ट्रंक में वापस विलय हो जाते हैं। मुझे लगता है कि सवाल यह है कि कौन सा तरीका बेहतर है? :) – stevehayter