Интеграция 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.