Мы используем git для управления нашими репозиториями кода.
Одним из наших репозиториев является репозиторий миграции базы данных, который использует flywaydb
.
Базы данных имеют состояние во времени и объектные зависимости, поэтомупередовой опыт использования пролетного пути заключается в увеличении префиксов файлов с использованием меток времени или чисел, а затем имени сценария.Таким образом, файлы перечислены в алфавитном порядке (в хронологическом порядке) и последовательно выполняются flyway
, который отслеживает состояние последнего выполненного сценария и может запускать отсутствующие сценарии.
Проблема заключается в том, что файлы имеют имена, названные последовательно во времении они заменяют один и тот же объект базы данных, такой как представление базы данных, как мы можем настроить git или flyway таким образом, чтобы во время фиксации git был достаточно умен, чтобы различать файл с файлом с другим именем на основешаблон, а не предыдущая версия этого файла?
Например, я создаю представление, и кто-то обновляет это представление через несколько дней ... ему потребуются два файла, такие как:
V20181121131512__create_myview.sql
V20181126235217__replace_myview.sql
В каждом представлении мы СОЗДАЕМ или ЗАМЕНИМ представление и просто обновляем его.Я хотел бы знать, есть ли способ, которым git может быть сконфигурирован так, чтобы он делал изменения при фиксации с шаблоном именования файлов.Например, суффикс, который будет относиться к одному и тому же имени объекта базы данных.
Я не хочу делать ручные сравнения все время, когда есть много запросов на просмотр для просмотра, и я хочу быстроПосмотрите, что изменилось между разными разработчиками, чтобы ускорить мой обзор.Но последовательное именование состояния базы данных с течением времени вынуждает предыдущий код для объекта базы данных в отдельный файл, поэтому каждый коммит для того же объекта базы данных, как SQL
представление, «выглядит» как совершенно новый файл, и история отсутствуетчтобы сравнить это с.
Есть мысли о том, как подойти к этому?Можно ли сконфигурировать git для выполнения различий при фиксации по шаблону суффикса именования файлов?Или есть ли другая альтернатива структурированию репо и именования файлов пролетных путей, чтобы со временем можно было решать состояние базы данных?