2014-04-12 11 views
5

Znalazłem this post, który wyjaśnia, w jaki sposób program Visual Studio 2013 może korzystać z wbudowanego narzędzia diff podczas porównywania plików w Git, ale mam przeciwny problem. Teraz, kiedy klikam prawym przyciskiem myszy plik w oknie Git Commit Details i wybieram Compare With Previous... VS wykonuje różnicę w domyślnym narzędziu porównywania Visual Studio 2013, ale chcę, aby korzystał z zewnętrznego narzędzia do porównywania, w szczególności TortoiseMerge.exe. Mam to określone w moim C: \ Users \ [My Name] \. Gitconfig i działa poprawnie z konsoli GitBash, ale Visual Studio ignoruje to ustawienie i zawsze używa jego wbudowanego narzędzia.Jak używać zewnętrznego narzędzia do porównywania dla Git w Visual Studio 2013?

To jest to, co mam w tej .gitconfig:

[merge] 
    tool = kdiff3 
[mergetool "kdiff3"] 
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe 
[diff] 
    guitool = TortoiseMerge 
[difftool "TortoiseMerge"] 
    path = C:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe 

Mam również sprawdził .gitconfig moim lokalnym repozytorium, aby upewnić się, że nie był nadrzędny to ustawienie, a nie określa żadnego diff lub difftool ustawienia.

Próbowałem również podobne ustawienia w moim .gitconfig jak:

[diff] 
    guitool = TortoiseMerge 
[difftool "TortoiseMerge"] 
    cmd = \"C:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe\" /base:"$REMOTE" /local:"$MINE" 

ale zachowanie nie zmienia się.

+0

myślę, że to się dzieje ze względu na miejsce w ścieżce pliku. sugeruje ponowne zainstalowanie 'kdiff' i' TortoiseMerge' do nowego katalogu tak, że nie ma spacji w ścieżce pliku. zamiast folderu 'Program Files'. –

+0

@mu 無 Próbowałem zainstalować TortoiseMerge w ścieżce folderu bez spacji, ale nadal mam ten sam problem :( – deadlydog

Odpowiedz

6

Visual Studio używa ustawienia konfiguracyjnego diff.tool, a nie ustawienia konfiguracyjnego diff.guitool.

Spróbuj:

[diff] 
    tool = TortoiseMerge 
0

miałem ten sam problem niedawno w Visual Studio 2012. będę pisać tutaj rozwiązanie, gdyż jest to pierwszy wątek znalazłem przy szukaniu.

Mój plik .gitconfig wyglądał następująco:

[merge] 
    tool = kdiff3 
[diff] 
    tool = kdiff3 
[difftool] 
    prompt = true 

[difftool "kdiff3"] 
    path = "C:/Program Files/KDiff3/kdiff3.exe" 
    keepBackup = false 
    trustExitCode = true 
[mergetool] 
    prompt = true 

[mergetool "kdiff3"] 
    cmd = "C:/Program Files/KDiff3/kdiff3.exe" $BASE $LOCAL $REMOTE -o $MERGED 
    keepBackup = false 
    trustExitCode = true 

[mergetool "vsdiffmerge"] 
    cmd = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsdiffmerge.exe" /m $REMOTE $LOCAL $BASE $MERGED 
    keepbackup = false 
    trustexistcode = true 

Problem polegał na tym, że nowe linie między odcinkami konfiguracyjnych.

Zmiana plik to działało poprawnie:

[merge] 
    tool = kdiff3 
[diff] 
    tool = kdiff3 
[difftool] 
    prompt = true 
[difftool "kdiff3"] 
    path = "C:/Program Files/KDiff3/kdiff3.exe" 
    keepBackup = false 
    trustExitCode = true 
[mergetool] 
    prompt = true 
[mergetool "kdiff3"] 
    cmd = "C:/Program Files/KDiff3/kdiff3.exe" $BASE $LOCAL $REMOTE -o $MERGED 
    keepBackup = false 
    trustExitCode = true 
[mergetool "vsdiffmerge"] 
    cmd = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsdiffmerge.exe" /m $REMOTE $LOCAL $BASE $MERGED 
    keepbackup = false 
    trustexistcode = true