Контроль версий файла с машинно-зависимым материалом - PullRequest
0 голосов
/ 08 февраля 2011

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

Я использую Mercurial, если тебе интересно, но я согласен с теоретическим ответом, если ты не знаком со спецификой hg.

Ответы [ 5 ]

1 голос
/ 08 февраля 2011

Обычный способ справиться с этим - поместить config.example или аналогичный элемент под управление версиями и заставить пользователя скопировать его и внести необходимые изменения. Таким образом, пользователь может получить полную структуру файла из вашего хранилища, не перезаписывая локальные изменения.

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

1 голос
/ 08 февраля 2011

Вы захотите использовать файл .hgignore , чтобы не включать файл конфигурации в хранилище.

Это позволит каждому иметь собственную версию файла конфигурации.

По сути, вы просто хотите добавить относительный путь к файлу конфигурации, а команды Mercurial проигнорируют его.Таким образом, файл будет выглядеть следующим образом:

config/dbconfig.ext

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

0 голосов
/ 08 февраля 2011

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

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

0 голосов
/ 08 февраля 2011

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

0 голосов
/ 08 февраля 2011

У меня есть для каждой машины базы данных для моих проектов PHP.Я проверяю имя хоста во время выполнения.Если это один хост, я передаю ему определенные учетные данные.Если другой, введите другие учетные данные.

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

...