Разработка по git flow, тесты и базы?

Добрый день!
Подскажите, пожалуйста, по нюансам разработки и организации окружения.
Сейчас разрабатываем небольшой веб проект просто в master & dev ветках, хотим перейти на git flow и не понятно что при этом делать с базами.
Допустим, разработчик начинает пилить новую фичу, делает под нее ветку в гите. Фича предполагает изменение структуры базы (изменение/добавление таблиц). Соответственно, разработчику на своем компе надо создать новый экземпляр бд под разработку этой фичи? Прописать ее в конфигах и тд. А если пилится несколько фич, то надо несколько баз и у разработчика и на дев сервере? У разработчиков windows на компах.
Как это принято организовывать с наименьшими трудозатратами?
  • Вопрос задан
  • 501 просмотр
Пригласить эксперта
Ответы на вопрос 2
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Исключаете конфиг БД из гита (и добавляете его в .gitignore) и оставляете только bd.config.example.
Разработчик копирует example и прописывает свои настройки и этот конфиг не попадёт в гит никогда.

На дэв серевере создаёт копию базы и работает на ней (что-бы не мешать другим), в случае если всё окей то вливает свои изменения в основную ветку и ели необходимо добавляет в bd.config.example новые, возможные, параметры.

Как создание БД у вас устроено я не вкурсе, то-ли вы структуру руками импортируете толи миграции используете, тут сами уж думайте, если руками то разраб. так-же вносит изменения в файлы с структурой.

P.S. Тут в самый раз использование Docker.
Ответ написан
@immaculate
Программист-путешественник
На вопрос сложно ответить, не зная на чем вы разрабатываете. Когда я разрабатываю на Django, то у меня в каждом проекте есть пакет settings с тремя модулями: production, development и local. Если для разработки требуются миграции, изменяющие схему, я делаю копию базы (pg_dump | psql) с соответствующим названиям, и в local_settings прописываю название копии.

В одном проекте, где у меня очень много веток и заказчику важно, чтобы все они были независимы (он делает скрупулезный code review по каждой и мержит каждую по отдельности), я немного автоматизировал этот процесс:
database = 'frobnicator'
branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode('ascii').strip()
if branch.startswith('python-3'):
    database = 'frobnicator-python3-port'
elif branch == 'master' or branch.startswith('FB-472'):
    database = 'frobnicator-filestack-integration'
else:
    raise RuntimeError('Please, update configuration file to use correct database')

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': database,
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы