2011-03-25 6 views
5

मैं एक रेपो का एक कांटा बनाए रखता हूं।गिट में एक sqlite3 बाइनरी फ़ाइल को ट्रैक करने का सही तरीका?

वह रेपो जो एक बाइनरी फ़ाइल को ट्रैक कर रहा है (जो एक sqlite3 फ़ाइल है)।

हर बार जब मैं उस रेपो से खींचता हूं, तो मुझे उस बाइनरी फ़ाइल के कारण विलय विवाद का अनुभव होता है।
इस तरह के विलय संघर्ष को हल करने का सही तरीका क्या है?

द्विआधारी फ़ाइलों (जैसे इस sqlite3 * .db फ़ाइल) को गिट में प्रबंधित करने का सही तरीका क्या है?

उत्तर

5

आप अपने वर्तमान संस्करण के शीर्ष पर always "keep theirs" (जो संस्करण खींच रहे हैं उसकी प्रतिलिपि बनाएँ) को निर्दिष्ट एक कस्टम मर्ज ड्राइवर परिभाषित कर सकते हैं।

.gitattributes 

mysqlite3.db merge=keepTheir 

(कहा जा रहा है,, binaries aren't always best managed with Git याद खासकर यदि वे अक्सर संशोधित कर रहे हैं)

+0

मैं नहीं कर सकते .gitattributes पाते हैं। क्या मुझे $ GIT_DIR/जानकारी/विशेषताओं में एक फ़ाइल बनाना है? –

+0

@shadyabhi: नहीं, आपको उन चीज़ों की मूल निर्देशिका में '.gitattributes' नामक एक फ़ाइल बनाना है, जिसे आप चाहते हैं कि यह संभवतः' .gitignore' के साथ) (संभवतः आपकी परियोजनाओं का शीर्ष स्तर) पर लागू हो। '$ GIT_DIR/जानकारी/विशेषताएँ 'केवल रेपो के आपके विशिष्ट क्लोन पर लागू होंगी, न कि दूसरों के लिए, क्योंकि यह स्पष्ट रूप से अनचाहे है। – Cascabel

+0

@shadyabhi: प्रश्न http://stackoverflow.com/questions/1910444/git-merge-s-theirs-needed-but-i-now-it-doesnt-exist/1910479#1910479 आपको एक और विस्तृत उदाहरण देता है। – VonC

0

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

https://github.com/cannadayr/git-sqlite

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