web-dev-qa-db-fra.com

Comment utiliser VS Code comme outil de fusion et de diff dans SourceTree?

Cette question et quelques autres expliquent comment cela pourrait fonctionner sur un Mac, mais je n'ai pas pu trouver de documentation de MS ou d'Atlassian sur un moyen de le faire sur Windows sans essayant d'en faire le paramètre git global. (Je préfère juste changer les choses dans le IDE si possible.)

Quels sont les paramètres à utiliser avec les paramètres "Personnalisés" dans l'onglet "Diff" de la boîte de dialogue "Options" de SourceTree, pour diff'er et fusionner avec VS-Code?

17
HeyHeyJC

Il peut y avoir d'autres meilleures variations, mais après quelques expériences, j'ai trouvé que cela fonctionnait assez bien ...

  • Choisissez "Personnalisé" pour "l'outil de diff externe" et "l'outil de fusion"
  • La "Commande Diff" dans les deux cas est le chemin d'accès à l'endroit où VS-Code est installé, par exemple:

    C:/Utilisateurs/nom d'utilisateur/AppData/Local/Programs/Microsoft VS Code/Code.exe
    o
    C:/Program Files (x86)/Microsoft VS Code/Code.exe

  • Les arguments de ligne de commande pour Diff'ing sont:

    --diff --wait "$ LOCAL" "$ REMOTE"

  • Et pour la fusion:

    -n - attendre "$ MERGED"

Le drapeau '-n' ouvre VS-Code dans une nouvelle fenêtre, ce que je préfère car VS-Code s'ouvre si vite, mais vous pouvez l'omettre. Lorsque vous traitez des conflits de fusion, vous devez fermer le fichier lorsque vous avez terminé pour continuer. SourceTree ne semble pas supprimer systématiquement les fichiers intermédiaires qu'il crée, mais vous pouvez les sélectionner, les cliquer avec le bouton droit et les "supprimer" de la section des fichiers non intermédiaires assez facilement.

36
HeyHeyJC

J'ai pu configurer avec les étapes suivantes en utilisant le code.cmd script

  • Définition de "Personnalisé" comme outil externe pour Diff et Fusion
  • Pointant vers le code.cmd commande

    C:\Users\[nom d'utilisateur]\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd

  • Utilisation des mêmes arguments de ligne de commande que l'explique @HeyHeyJC

    Les arguments de ligne de commande pour Diff'ing sont:

    --diff --wait "$ LOCAL" "$ REMOTE"

    Et pour la fusion:

    -n - attendre "$ MERGED"

Pour moi, j'ai ensuite pu utiliser à la fois diff et la fusion à partir de sourcetree.


Remarque: par défaut lecode.cmdle fichier contenait un argument de ligne de commande pour ouvrir les instructions CLI"%~dp0..\resources\app\out\cli.js", et l'avoir ouvert à chaque fois était un peu fastidieux! J'ai supprimé cela pour que mon fichier se présente comme suit, maintenant seuls les fichiers envoyés depuis sourcetree sont ouverts.

@echo off
setlocal
set VSCODE_DEV=
set ELECTRON_RUN_AS_NODE=1
call "%~dp0..\Code.exe" %*
endlocal
3
Dan Gardner