Я веб-разработчик, работающий самостоятельно с использованием django, и я пытаюсь понять, как лучше развернуть сайты с помощью Mercurial. Я хотел бы иметь один репозиторий, который мог бы использовать как для производства, так и для разработки. Всегда будут некоторые различия между производством / разработкой (например, они могут использовать разные базы данных, при разработке всегда будет включена отладка), но в целом они будут синхронизированы. Я также хотел бы иметь возможность вносить изменения непосредственно на рабочем сервере (приведение в порядок html или css, простые исправления ошибок и т. Д.).
Рабочий процесс, который я собираюсь использовать для этого, выглядит следующим образом:
- Создание 2 веток, prod и dev (все настройки изначально настроены на производственные настройки)
- Измените settings.py и несколько других вещей в ветке dev. Так что теперь у меня есть 2 головы, и теперь в хранилище всегда будет 2 головы.
- (на компьютере разработчика) Внесите изменения в dev, затем используйте «hg трансплантат» для копирования соответствующих наборов изменений в производство.
- отправка в главный репозиторий
- (на рабочем сервере) Извлечение из главного репозитория, обновление до головки продукта
Примечание: вы также можете вносить изменения прямо в продукт, если вы пересаживаете изменения в dev.
Этот рабочий процесс имеет недостаток, заключающийся в том, что всякий раз, когда вы вносите изменение, вам нужно не только передать его в какую-либо ветвь, в которую вы вносите изменение, но и перенести его в другую ветку. Есть ли более разумный способ сделать то, что я хочу здесь, возможно, с помощью патчей? Или, если это не удастся, есть ли способ автоматизировать процесс фиксации для автоматической трансплантации набора изменений в другую ветвь, и это будет хорошей идеей?