С помощью встроенного средства слияния Visual Studio 2012 с Git

Итак, я не знаю, заметил ли кто-нибудь, но новый инструмент слияния, упакованный с VS2012, болен до макс. Недавно я перешел на Git для своего исходного элемента управления и действительно хочу иметь возможность устанавливать VS2012 в качестве моего default diffftool/mergetool.

Любые предложения относительно того, как это сделать? Я предпочел бы, чтобы diff/merge запускался в активном окне VS2012, а не в новом экземпляре, если это возможно.

Ответ 1

Если вы используете Git поставщик источника управления с помощью Visual Studio, он выглядит как эта функция была реализована и доступна с версии 1.0.0.

Или если вы начнете использовать Microsoft инструменты для git, который также будет использовать встроенный инструмент diff. Из некоторых скриншотов, похоже, что это будет двухстороннее слияние, а результат внизу.

Ответ 2

В этой статье объясняется, как это сделать. Я пробовал это, и это работает. В моем использовании diff был открыт в любом существующем экземпляре Visual Studio, который вы предпочитаете.

[diff]
    tool = vsdiffmerge
[difftool]
      prompt = false
[difftool "vsdiffmerge"]
      cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t
      keepbackup = false
      trustexitcode = true
[merge]
      tool = vsdiffmerge
[mergetool]
      prompt = false
[mergetool "vsdiffmerge"]
      cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/vsdiffmerge.exe"' "$REMOTE" "$LOCAL" "$BASE" "$MERGED" //m
      keepbackup = false
      trustexitcode = true

Или используйте %VSINSTALLDIR%, чтобы всегда ссылаться на версию Visual Studio, соответствующую командной строке, которую вы открыли (это работает только тогда, когда среда Visual Studio была настроена, либо с помощью ярлыка командной строки Visual Studio или вручную вызывающего vsvars32.bat):

[diff]
    tool = vsdiffmerge
[difftool]
      prompt = false
[difftool "vsdiffmerge"]
      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t
      keepbackup = false
      trustexitcode = true
[merge]
      tool = vsdiffmerge
[mergetool]
      prompt = false
[mergetool "vsdiffmerge"]
      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" "$BASE" "$MERGED" //m
      keepbackup = false
      trustexitcode = true

Ответ 3

Те решение, помеченное как ответ, не работает для меня, но это произошло (у меня было место vsdiffmerge.exe на моем пути - не знаю, было ли с ним что-нибудь с ним):

[diff]
    tool = vsdiffmerge
    guitool = vsdiffmerge
[difftool]
    prompt = true
[difftool "vsdiffmerge"]
    cmd = $LOCAL $REMOTE /t
    keepbackup = false
    trustexistcode = true
    path = C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe
[merge]
    tool = vsdiffmerge
[mergetool]
    prompt = false
[mergetool "vsdiffmerge"]
    cmd = $REMOTE $LOCAL $BASE $MERGED /m
    keepbackup = false
    trustexitcode = true
    path = C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe