2011-09-13 22 views
5

Mercurial'da, harici dif ve birleştirme araçları için bir model tanımlanabilir (böylece yalnızca belirtilen desenle eşleşen dosyalar için çağrılırlar):Git: difftool ve mergetool için desenleri yapılandırın

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

Bu tür örüntüler Git'te nasıl tanımlanır? git-config (1) 'deki

[mergetool] bölümü herhangi bir desen, maske veya benzer herhangi bir şeyden söz etmez.

EDZ:

İşte .git/config'un ilgili bir parçası:

[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" 

Artık tüm dosyalar için çalışıyor.

Benim difftool ve mergetool olarak adlandırılacak

x x x x :

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

Ayrıca

[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 

değerini .git/config dizinine ekledim.

Şimdi

git difftool 

çalışıyorum. difftool yerine KDiff3 çağırır. Neyi yanlış yapıyorum?

Yorum: Test etmek daha kolay olduğundan difftool yerine mergetool ile oynuyorum çünkü difftool'ü yapılandırmayı başarabilirsem, mergetool'ü nasıl yapılandıracağımın açık olacağına inanıyorum.

DÜZENLEME:

Artık çalışır.

.zg/info/öznitelikleri:

.ext diff=difftool 

difftool.git.sh (PATH içinde)

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

Ancak bir Windows üzerinde yan etki: git diff şimdi APPCRASH ile sonuçlanıyor.

git diff çökmesini veya asılmasını nasıl önleyeceğimi anladım: git difftool kullanmalı veya git diffsh: sh -c "git diff"

cevap