2011-09-13 11 views
5

mergetool मर्क्युरियल में, एक बाहरी diff के लिए एक पैटर्न को परिभाषित करने और उपकरण विलय (केवल पैटर्न निर्दिष्ट मिलान फ़ाइलों के लिए इतना है कि वे कहा जाता है) कर सकते हैं:Git: difftool के लिए पैटर्न कॉन्फ़िगर और

[diff-patterns] 
**.ext = difftool 
[merge-patterns] 
**.ext = mergetool 

कैसे परिभाषित करने के लिए गिट में ऐसे पैटर्न?

[mergetool] अनुभाग git-config (1) में किसी भी पैटर्न, मास्क या किसी भी समानता का उल्लेख नहीं करता है।

संपादित:

[diff] 
    tool = difftool 
[difftool "difftool"] 
    cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE" 

[merge] 
    tool = mergetool 
[mergetool "mergetool"] 
    cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED" 

अब यह सभी फ़ाइलों के लिए काम करता है:

यहाँ मेरी .git/config की प्रासंगिकता का है।

मैं अपने difftool और mergetool चाहते फ़ाइलों के लिए केवल के नाम से जाना के साथ .ext

संपादित समाप्त होने के नामों के साथ:

मैं एक फ़ाइल .git/जानकारी को शामिल किया है/निम्नलिखित सामग्री के साथ जिम्मेदार बताते हैं :

*.ext diff=difftool 
*.ext merge=mergetool 

मैं भी

जोड़ दिया है 10
[diff "difftool"] 
    name = my custom diff driver 
    driver = difftool.git.sh %A %B %O 
[merge "mergetool"] 
    name = my custom merge driver 
    driver = mergetool.git.sh %A %B %O %A 

मेरे .git/config पर।

अब मैं चलाने

git difftool 

यह मेरी difftool के बजाय KDiff3 कहता है। मुझसे क्या गलती हुई है?

टिप्पणी: मैं मेरेटूल के बजाय difftool के साथ खेल रहा हूं क्योंकि यह परीक्षण करना आसान है और मुझे विश्वास है कि अगर मैं difftool को कॉन्फ़िगर करने का प्रबंधन करता हूं, तो यह मेरे लिए स्पष्ट होगा कि मेरेटूल को कैसे कॉन्फ़िगर किया जाए।

संपादित:

Difftool अब काम करता है।

.git/config:

[diff "difftool"] 
    command = difftool.git.sh 

.git/जानकारी/गुण:

.ext diff=difftool 

difftool.git.sh (पथ में)

#!/bin/sh 
difftool.jar "$2" "$5" 

लेकिन वहाँ है एक विंडोज पर साइड इफेक्ट: git diff अब एपीसीआरएएसएएसएच में परिणाम।

संपादित:

मैं पता लगा है दुर्घटनाग्रस्त या git diff की फांसी से बचने के लिए कैसे: एक git difftool का उपयोग करें या फोन git diffsh के माध्यम से करना चाहिए: sh -c "git diff"

उत्तर

4

आप एक gitattributes file में मर्ज चालक का प्रयोग करेंगे।

उदाहरण के लिए देखें "How do I tell git to always select my local version for conflicted merges on a specific file?"

*.ext merge=mymergetool 

आप एक gitattributes फ़ाइल में पैटर्न का उपयोग कर सकते हैं।

+0

क्या यह diff ड्राइवर पर भी लागू होता है? इसे काम करने के लिए प्रबंधित नहीं कर सका। मुझे वास्तव में एक साधारण नमूना की जरूरत है। – utapyngo

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