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 году. Заранее спасибо.

Вернуться на верх