2016-02-01 6 views
9

मैं एक कस्टम मर्ज ड्राइवर के साथ एक गिट भंडार स्थापित करना चाहता हूं, और फिर विलय करते समय पहचान का नाम बदलना अक्षम कर दूंगा।कस्टम गिट मर्ज ड्राइवर बिना किसी नाम का पता लगाने

समस्या यह है कि, यदि मैं डिफ़ॉल्ट रिकर्सिव रणनीति का उपयोग करता हूं, तो मैं पहचान का नाम अक्षम कर सकता हूं, और यदि मैं संकल्प रणनीति का उपयोग करता हूं (आदर्श नहीं, लेकिन पर्याप्त अच्छा), मर्ज ड्राइवर को अनदेखा किया जाता है।

ध्यान दें कि फ़ाइल सामग्री पूरी तरह मिलान होने पर भी मैं पहचान का नाम बदलना चाहूंगा।

.git/config:

[merge "my"] 
    name = my merge 
    driver = my_merge_driver %A %O %B 
[merge] 
    default = my 

प्रयास:

$ git merge -X rename-threshold=200% # Equivalent to 100% 
$ git merge -s resolve    # Custom driver ignored 
$ git --version      # git version 2.2.0-rc0 
+0

हल किया जाता है यह अभी भी साथ उपेक्षा है गिट 2.7.0? – VonC

+1

मुझे लगता है कि यह अभी भी अनदेखा है, मेरे पुराने उत्तर को पढ़ना http://stackoverflow.com/a/22579625/6309 – VonC

+0

दरअसल, @VonC, मैं गिट संस्करण 2.7.0 के साथ एक ही व्यवहार की पुष्टि कर सकता हूं। – filipos

उत्तर

2

Git 2.8.0.rc0 के रूप में, मर्ज-पुनरावर्ती एल्गोरिदम अब एक विकल्प "नहीं-renames" (4ce064d प्रतिबद्ध) को स्वीकार करता है, इसलिए मेरी समस्या अब तक

$ git merge -X no-renames 
1

ध्यान में रखते हुए उपयोग के मामले तो आप इस के लिए योजना बना रहे हैं, तो एक अच्छी युक्ति, फ़ाइल का नाम लिखने के साथ-साथ होगा प्रत्येक फ़ाइल में संस्करण संख्या।

+0

मुझे थोड़ा बदसूरत लगता है, और इसे रिपोजिटरी को संभालने वाले कोड पर कुछ (सरल) परिवर्तनों की आवश्यकता होगी, लेकिन, यह काम करता है। समाप्त बक्षीस दी गई। मैं यह देखने के लिए कुछ और समय इंतजार करूंगा कि एक दूसरे को स्वीकार करने से पहले क्या उत्तर दिखाई देते हैं। – filipos

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