Могу ли я иметь разные приватные конфигурационные файлы в разных ветках git? - PullRequest
2 голосов
/ 03 апреля 2012

Мы разрабатываем продукт и используем Git в качестве SCM. Каждая дополнительная версия продукта находится в отдельной ветке. Как разработчик, у меня есть свой собственный набор баз данных, по одной для каждой вспомогательной версии. У меня также есть личный файл конфигурации, который игнорируется Git, и он указывает, какую базу данных использовать. Но поскольку Git игнорирует его, он остается неизменным независимо от того, на какой ветке я сейчас работаю. Это нехорошо, потому что если в файле конфигурации указано использование базы данных db_1_2 (которая предназначена для ветви 1.2), переключение на ветку 1.3 оставляет файл конфигурации по-прежнему указывающим на базу данных db_1_2.

В настоящее время у меня есть фрагмент кода, который читается и анализируется идентификатор ветви, чтобы установить правильную базу данных, но он подвержен ошибкам, потому что идентификатор Git существует во многих вариантах, большинство из которых довольно трудно / невозможно разрешить правильное название ветви от.

Я могу спросить сам продукт, но не у всех старых версий есть статический метод getVersion ().

Итак, мой вопрос заключается в следующем: есть ли какой-нибудь хороший и чистый способ, чтобы частный конфигурационный файл каким-то образом принадлежал ветви, но не попадал в конечный продукт при отправке в удаленное / центральное хранилище?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Почему версия базы данных находится в игнорируемом файле конфигурации, когда база данных так тесно связана с веткой? Вы запрашиваете способ определения базы данных из ветви, но вся задача ветви состоит в том, чтобы предоставить состояние кода, специфичное для ветви и соответствующее всему остальному в ветви. Переместите идентификатор базы данных из файла конфигурации во что-то, что не игнорируется.

0 голосов
/ 03 апреля 2012

У вас может быть изменяемый (автоматически) конфиг, отражающий изменения веток, если он будет версионирован как шаблон и, используя идею из этого моего поста , вы добавите ключевые слова в зависимую от ветки частьшаблона и фильтров для обработки этих ключевых слов.Ветвь для любой ревизии может быть

git branch | grep "*"

git status | grep 'On branch'

git symbolic-ref -q HEAD (?)

git branch | sed --quiet 's/* \(.*\)/\1/p'

Не вижу, как избежать побочных эффектов при нажатии

0 голосов
/ 03 апреля 2012

Как насчет того, чтобы создать серию файлов конфигурации, названных в честь ваших веток git? Тогда вы можете сделать что-то подобное, когда у вас появится шанс:

ln -s configs/$(git symbolic-ref HEAD|cut -f3 -d/) myconfig.conf

В качестве альтернативы, вместо запуска:

git co -b branchname

Создание скрипта switchbranch делает что-то вроде:

git co -b $1
ln -s configs/$1 myconfig.conf

И все это становится автоматическим. Вы могли бы даже придумать и создать файл конфигурации шаблона, если переключитесь на ветку, для которой нет существующей конфигурации.

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