Могу ли я git игнорировать целую ветку, чтобы создать локальную ветку, которая взаимодействует с живым сервером, с отладкой, установленной в True? - PullRequest
1 голос
/ 04 июня 2019

Я собираюсь начать развертывание, и у меня возникли некоторые проблемы со сбоями моего живого сервера, и мне не удалось установить для отладки значение True.

У меня есть представление о том, какЯ бы хотел, чтобы все было настроено, но я думаю, что мне нужна помощь.

У меня есть локальная ветвь master и локальная база данных с Django Debug=True.
Я нажимаю master на своем сервере, где есть действующая база данных и файл .envс Debug, установленным на False.

Теперь я настроил новую локальную ветвь - debug - с Debug=True, и используя туннель SSH, я могу подключиться к своей действующей базе данных.
Все, для чего я этого хочу, - это запускать мой код для действующей базы данных, с Debug, установленным в True.Поэтому, когда на сервере что-то ломается, если debug и master по сути одинаковы, кроме .env, я должен быть в состоянии отладить все, что не так, без Debug=TRUE, когда-либо происходившего в прямом эфире с выходом в Интернет.экземпляр.

Мне бы хотелось, чтобы моя локальная ветка debug была точной копией master, но вместо подключения к локальной базе данных она подключалась к живой.через SSH туннель, с и Debug = True.

Проблема

У меня есть файл .gitignore с именем .env, и я запускаю python decouple.
My *В этом файле .gitignore есть ссылки на файлы 1036 *.
Существует .env для действующего сервера и один для локальной master ветви.

Теперь мне нужен третий для ветки debug - но он не отслеживается Git, поэтому, когда я переключаю ветки, он все равно указывает на мой единственный файл .env.
Если я его отслеживаю, это заканчивается в репозитории, отказываясь от цели разъединения.

До сих пор я жестко закодировал переменные среды (база данных и т. д.) в файл settings.py моей ветви debug.

Но как мне теперь двигаться вперед?
Как я могу иметь debug так же, как master во всех отношениях, кроме settings.py?Мой .gitignore не зависит от ветви?
А также, как автоматически синхронизировать debug с master?
В идеале, я бы синхронизировал debug с master (кроме settings.py), и тогда вся ветка просто никогда не совершает репо?

Есть ли лучшее решение для всего этого?

1 Ответ

0 голосов
/ 04 июня 2019

Есть ли лучшее решение для всего этого?

Да, и оно включает в себя сохранение (для данного файла, здесь env-dev.txt) различного контента на основе ветвей, что означает:

  • версия только для файла шаблона env.tpl
  • файлы значений версии, названные в честь ветвей: env.dev, env.master: так как они различны, при объединении или переключении веток проблем слияния не возникает.

Для этого вы должны были бы зарегистрироваться (в .gitattributes декларации ) в своем репо подмодуля a драйвер фильтра содержимого .

smudge (изображение из " Настройка атрибутов Git - Git ", из " Pro Git book")

Сценарий smudge, связанный с файлом шаблона (env.tpl), будет генерировать (автоматически при git checkout) фактический envфайл, посмотрев значения в правом env.<branch> файле значений.Сгенерированный фактический env файл остается проигнорированным (.gitignore), как вы делаете сейчас.

См. Полный пример в " git smudge / clean filter между ветками ".

Ваш скрипт smudge может определить имя извлеченной ветви с помощью:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

Та же идея применима и к settings.py, если вам нужен отраслевой контент.`

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