2010-06-30 17 views
7

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

उत्तर

3

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

+0

धन्यवाद मार्कस। हमें अपने संचार के साथ और अधिक अनुशासित होना होगा! –

1

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

+0

धन्यवाद मार्टिन - हम इसे देखेंगे। –

3

कोर डेटा मॉडलों की विलय की समस्या को हल करने का कोई तरीका नहीं है, लेकिन मैंने कोर डेटा मॉडल फ़ाइलों के लिए एक गिट डिफ ड्राइवर बनाया है जो चीजों को थोड़ा आसान बनाना चाहिए (इसे सेट अप करने के निर्देशों के लिए रीडमे देखें)

समीक्षा हमारी शाखा

में मॉडल में किए गए परिवर्तनों:

https://github.com/chaitanyagupta/XCDataModelPrinter

बार जब आप अपने Git-diff चालक के रूप में XCDataModelPrinter सेट कर लेते हैं, तो आप थोड़ा आसान विलय करने के लिए कुछ कर सकते हैं

git diff other-branch...my-branch -- /path/to/model 

समीक्षा अन्य शाखा

git diff my-branch...other-branch -- /path/to/model 

में मॉडल में किए गए परिवर्तनों के बाद आप परिवर्तनों की समीक्षा कर चुके हैं तो आइए कोशिश करते हैं और हमारी शाखा पर मर्ज करते हैं:

git merge other-branch 

हैं Git नहीं था ' टी किसी मर्ज संघर्ष की रिपोर्ट है, तो मर्ज परिणामों की समीक्षा (आप इस मामले में एक संयुक्त अंतर देखेंगे)

git diff --cached /path/to/model 

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

चेक बाहर मॉडल परिवर्तन:

git checkout --ours -- /path/to/model 

ऊपर अन्य शाखा में किए गए परिवर्तनों को देखने के लिए diff आदेश का उपयोग करना, मैन्युअल रूप से उन परिवर्तनों को जोड़ सकते हैं और समीक्षा:

git diff -- /path/to/model 

एक बार जब आप कर रहे हैं संतुष्ट, बस मॉडल फ़ाइल Git-जोड़ सकते हैं ताकि अपने नहीं रह मर्ज ना किए गए के रूप में चिह्नित करें और पुष्टि:

git add /path/to/model 
git commit 
संबंधित मुद्दे