/SSMS-to-Git

SSMS integration with Git

Primary LanguageBatchfileMIT LicenseMIT

Интеграция SSMS и Git

Для автоматизации ряда действий при использовании SSMS и Git можно настроить интеграцию на основе внешних инструментов SSMS.

Установка

  • Скопировать bat-файл ssms_to_git.bat в папку репозитория, где находятся папки схем БД с sql-объектами.

Функционал

Реализованный функционал работает с файлами, открытыми в SSMS и содержащими скрипты таких sql-объектов, как процедуры, функции, представления, триггеры.

Возможные действия и соответствующий режим (mode) работы скрипта:

Действие Режим
Копирование файла из SSMS в папку репозитория Git copy
Сравнение файлов SSMS и Git diff
Слияние файлов SSMS и Git merge
Открытие файла из Git open
Открытие в проводнике файла из Git explore

Для корректного определения sql-объекта в скрипте должна быть строка вида:

(CREATE|ALTER|CREATE OR ALTER) (PROCEDURE|PROC|FUNCTION|VIEW|TRIGGER) [schema].[name]

Для сравнения и слияния файлов используется программа KDiff3 (должна быть установлена на ПК).

Настройка

Для использования функционала под каждое действие необходимо добавить внешний инструмент в SSMS Tools -> External Tools, где указать:

  • Command - путь к bat-файлу
  • Arguments - $(ItemPath) mode, где mode - один из возможных режимов работы скрипта
  • Close on exit - необходимо включить, чтобы окно командной строки автоматически закрывалось

Вызвать добавленный инструмент можно из меню SSMS Tools -> Название_инструмента или назначить сочетание клавиш в SSMS Tools -> Options -> Environment -> Keyboard для соответствующей команды Tools.ExternalCommand1, Tools.ExternalCommand2 и т.д.

Возможные сценарии использования

  • Разработка

При разработке в SSMS можно сохранить изменения в Git вызовом внешнего инструмента для копирования файла из SSMS в папку репозитория Git.

  • Внедрение

При внедрении разработанного функционала необходимо проверить, что на бою нет других изменений.

Для этого после слияния в основную (master) ветку, до отправки (push) изменений в удаленный репозиторий, можно получить список измененных объектов следующей командой в терминале (например, Bash):

git diff origin/master master --name-only --diff-filter=AMR

Затем открыть объект в SSMS на бою и вызвать внешний инструмент для сравнения или слияния файлов SSMS и Git.

После этого можно открыть файл для наката, используя внешний инструмент для открытия файла из Git.