Більшу частину часу я зберігаю конфігурацію програми розробки в кореневому каталозі проекту, наприклад:
app
|-- config.json
Але це здається не найкращим підходом, оскільки ця конфігурація зберігається в системі контролю версій - можливо, це призводить до витоку імен користувачів, паролів та інших чутливих речей.
12 Посібник із програми Factor рекомендує взагалі видаляти конфігураційні файли та використовувати змінні середовища для налаштування:
... зберігає конфігурацію у змінних середовища. Env vars легко змінювати між пристроями без зміни коду; на відміну від конфігураційних файлів, мало шансів випадково їх перевірити в код репо; і на відміну від користувальницьких конфігураційних файлів або інших механізмів конфігурації, таких як Властивості системи Java, вони є мовним та оперативним стандартом ОС.
Це звучить дуже добре для мене, але де можна зберігати вказані змінні середовища, не перевіряючи їх на контроль джерел? І якими інструментами я можу скористатися для передачі цих змінних у додаток? Тут може бути кілька десятків параметрів конфігурацій, і вводити їх вручну кожного разу, коли ви запускаєте додаток, це не приємно - тому їх треба десь зберігати у якомусь файлі. Таким чином, згаданий файл опиниться в контролі джерела, і ми повернемося туди, де ми почали.
Чи існує якийсь загальновизнаний спосіб обробки параметрів конфігурації, який не ризикує зберегти локальну конфігурацію в керуванні джерелами?
.gitignore
де я можу визначити файли чи папки, які не слід перевіряти в контролі версій. Як ви кажете, я не бачу, де Env vars дійсно повинен допомогти, якщо у вас є сценарій для їх встановлення, і його слід зберігати разом з проектом, або у вас є "десь" у вашій системі (домашній каталог або навіть у запуску машин. сценарії), які, здається, створюють цілу масу проблем самостійно, особливо якщо потрібна велика кількість конфігурацій. У будь-якому випадку я б розділив конфігураційні файли, щоб конфіденційна інформація містилася в різних файлах.