Есть ли способ предотвратить git отправку / извлечение обновлений файла, но сохранить его на контроле версий? - PullRequest
0 голосов
/ 13 апреля 2020

Я знаю, что есть способ остановить отслеживание файла, который хранит его локально, но удаляет файл при управлении версиями для других разработчиков. У меня есть ветка dev и ветка prod для моего flask проекта на одном удаленном (через GitHub) ветке prod, развернутой в Heroku.

Обе ветви нуждаются в файле .flaskenv, но мне нужно оставьте FLASK_ENV=development на ветке dev и FLASK_ENV=production на ветке prod. Однако всякий раз, когда мне нужно объединить ветку dev с веткой prod для внесения других изменений в проект, она меняет переменную FLASK_ENV с production на development. Это происходит автоматически, без необходимости ставить и фиксировать .flaskenv, потому что изначально я установил их как отдельные.

Я попытался создать .gitignore и добавить .flaskenv в файл, но он не работает так же хорошо, как изменение прав доступа к файлу только для чтения и выполнения, но, похоже, git игнорирует права доступа к файлу.

Есть ли другой способ, который мог бы работать в этом случае?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Итак ... Ответ Криса касается вашего случая практического использования и, возможно, является более важным обсуждением для вашей ситуации. Но это не совсем отвечает на ваш вопрос; и я не хочу, чтобы это выглядело так, как будто ответ был "да", но ваш конкретный c вариант использования привел к обходному пути вместо ...

Есть ли способ предотвратить git выдвигать / извлекать обновления в файл, но держать его на контроле версий?

Нет.

Есть несколько способов, которые людям нравится рекомендовать, но все они неверны и либо не будет работать или вызовет несвязанные проблемы в какое-то случайное время в будущем.

Решение зависит от ситуации. Для вашего случая использования это выглядит так, как будто приходит ответ Криса. В целом, большинство решений включают сохранение конфигураций c, определенных environemnt, вне git. (Единственный шаблон, который является исключением из этого, состоит в том, чтобы иметь my.config.file.dev и my.config.file.prod, et c. И использовать сценарии развертывания, чтобы выбрать правильный; иногда это работает, и технически сохраняет настройки в git.)

1 голос
/ 13 апреля 2020

Обе ветви нуждаются в .flaskenv файле

Нет, они не делают.

Не используйте .env или другие файлы окружения в Heroku. Это просто удобный способ установки переменных среды в процессе разработки. Heroku поддерживает переменные среды непосредственно через его конфигурационные переменные .

Удалите этот файл из управления версиями, запустив git rm --cached .flaskenv (его вообще не нужно отслеживать, даже в вашей ветке разработки), добавьте .flaskenv к вашему .gitignore и разверните снова. Затем установите переменную в Heroku, набрав

heroku config:set FLASK_ENV=production
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...