web-dev-qa-db-fra.com

Utilisation de l'outil de fusion intégré de Visual Studio 2012 avec Git

Donc, je ne sais pas si quelqu'un l'a remarqué, mais le nouvel outil de fusion fourni avec VS2012 est malade au maximum. Je suis récemment passé à Git pour mon contrôle de code source et je veux vraiment pouvoir configurer VS2012 comme outil difftool/mergetool par défaut.

Des suggestions sur la façon de procéder? Je préfère que la diff/fusion soit démarrée dans la fenêtre VS2012 active et pas une nouvelle instance si possible.

30
Adam Drewery

Si vous utilisez Git Source Control Provider avec Visual Studio, il semble que cette fonctionnalité a été implémentée et est disponible à partir de la version 1.0.0.

Ou si vous commencez à utiliser Microsoftoutils pour git , cela utilisera également l'outil de diff intégré. D'après certaines captures d'écran , il semble que la fusion va dans les deux sens, avec le résultat en bas.

13
R0MANARMY

Cet article explique comment procéder. J'ai essayé et ça marche. Dans mon utilisation, le diff a été ouvert dans n'importe quelle instance existante de Visual Studio, ce que vous avez préféré.

[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

Ou utiliser %VSINSTALLDIR% pour toujours référencer la version de Visual Studio qui correspond à la ligne de commande que vous avez ouverte (cela ne fonctionne que lorsque l'environnement Visual Studio a été configuré, soit en utilisant le raccourci d'invite de commandes Visual Studio, soit en appelant manuellement 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
78
guanome

La solution marquée comme ayant répondu n'a pas fonctionné pour moi, mais cela a fonctionné (j'avais l'emplacement vsdiffmerge.exe sur mon chemin - je ne sais pas si cela avait quelque chose à voir avec):

[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
1
Küzdi Máté