Как использовать VS Code в качестве инструмента слияния и разбора в SourceTree?

Этот вопрос и некоторые другие обсуждают, как это может работать на Mac, но я не мог найти документацию от MS или Atlassian, чтобы сделать это на Windows, не пытаясь сделать его глобальной настройкой git. (Я просто предпочитаю менять вещи в среде IDE, где это возможно).

Каковы параметры, которые следует использовать с настройками "Custom" в диалоговом окне "Параметры" диалогового окна "Параметры" на вкладке "Параметры", для разграничения и слияния с VS-кодом?

Ответ 1

Могут быть и другие лучшие варианты, но после некоторого эксперимента я нашел, что они работают достаточно хорошо...

  • Выберите "Custom" для "External Diff Tool" и "Merge Tool"
  • "Команда Diff" в обоих случаях - это путь к месту установки VS-кода, например:

    C:/Пользователи/имя пользователя /AppData/Local/Программы/Microsoft VS Code/Code.exe
    или же
    C:/Программные файлы (x86)/Microsoft VS Code/Code.exe

  • Аргументы командной строки для Diff'ing:

    --diff - подождите "$ LOCAL" "$ REMOTE"

  • И для слияния:

    -n - подождите "$ MERGED"

Флаг -n заставляет VS-код открывать новое окно, которое я предпочитаю, поскольку VS-код открывается так быстро, но вы можете его опустить. При работе с конфликтами слияния вы должны закрыть файл, когда закончите, чтобы продолжить. Похоже, что SourceTree не удаляет последовательно промежуточные файлы, которые он создает, но вы можете выбрать, щелкнуть правой кнопкой мыши и "удалить" их из раздела "Нерасположенные файлы" достаточно легко.

Ответ 2

Я смог настроить следующие шаги, используя скрипт code.cmd

  • Установка "Custom" в качестве внешнего инструмента для Diff и Merge
  • Указывая на команду code.cmd

    C:\Users\[имя пользователя]\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd

  • Использование тех же аргументов командной строки, что объясняет @HeyHeyJC

    Аргументы командной строки для Diff'ing:

    --diff - подождите "$ LOCAL" "$ REMOTE"

    И для слияния:

    -n - подождите "$ MERGED"

Тогда я смог использовать diff и merge из sourcetree.


Примечание. По умолчанию файл code.cmd содержал аргумент командной строки для открытия инструкций CLI "%~dp0..\resources\app\out\cli.js", и каждый раз открывать его было немного утомительно! Я удалил это, чтобы мой файл выглядел следующим образом, теперь открываются только файлы, отправленные с исходного дерева.

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