Django/Python: Управление различными требованиями (pip) между ветвями Git
Django веб-сайт, с двумя файлами требований (base
и local
для вещей типа django-debug-toolbar
). Этим проектом в основном управлял только я, но недавно мы добавили разработчика. У нас есть основная ветка, развертываемая в продакшн (master
), и несколько проблемных веток для разработки функций или исправления ошибок (например, issue-1234
).
Допустим, в ветке (django4-upgrade
) я хочу исследовать обновление до Django 4 с версии 3.2. Я могу сделать ответвление, затем pip install django==4.0.0
и тестировать/разрабатывать, но затем, если я git checkout master
после проталкивания этих экспериментальных изменений, в моей виртуальной среде будет Django 4.0.0. Вещи могут сломаться.
Какова стратегия лучших практик для управления различными требованиями в ветках Git на одной системе (например, с использованием одной виртуальной среды)? Я могу представить себе несколько веток для тестирования различных функций, и все они требуют немного разных requirements.txt
файлов.
В настоящее время я не фиксирую свои виртуальные среды в Git-репозиториях. Мой текущий наивный подход состоит в том, чтобы заморозить требования для данной ветки, когда я заканчиваю разработку, затем, когда я проверяю другую ветку, я могу установить все эти требования и вернуть мою исходную виртуальную среду к тому состоянию, в котором она была. Это имеет свои ограничения.
Я вижу этот пост, но это не совсем правильно. Что произойдет, если я забуду выполнить pip freeze
для поддержания актуальности моих требований?
В настоящее время я работаю над автоматизацией этого процесса (чтобы заморозить и установить требования, по мере необходимости), поэтому ищу, как люди делают это в 2022 году. Заранее спасибо.