SVN: файл только для чтения / только для оформления заказа - PullRequest
2 голосов
/ 22 октября 2010

Я ищу следующее:

Допустим, у меня есть файл "database.conf", в котором есть некоторые значения по умолчанию для подключения к базе данных (имя_базы, пользователь, пароль и т. Д.)Всем нужен этот файл с разными настройками (например, пароль).Однако локальные изменения в этом файле не должны передаваться в хранилище никогда.Таким образом, файл должен быть «только для проверки».Это возможно?

Ответы [ 4 ]

3 голосов
/ 22 октября 2010

Мое обычное решение - создать набор файлов конфигурации с разными именами и поместить их под контроль исходного кода вместе со сценарием, чтобы скопировать подходящий файл в фактическое местоположение;однако файл конфигурации, который будет использоваться, остается неверсированным.Например, у меня может быть папка «config_files», содержащая файлы «dev.config», «production.config», «qa.config» и т. Д .;мои сценарии развертывания позаботятся о копировании правильного сценария в правильное местоположение (скажем, «App.config»).

Вы могли бы даже использовать крючки, чтобы автоматизировать это еще немного.

2 голосов
/ 22 октября 2010

Вы можете создать database.conf.sample для помещения в репозиторий и установить свойство ignore для файла database.conf.

0 голосов
/ 22 октября 2010

Если вы используете Maven, вы можете создавать профили для каждой среды.

* 1003 например *

local.filter.properties dev.filter.properties beta.filter.properties

Теперь в файле pom.xml вы можете определить некоторые профили и указать им разные файлы свойств.

        <profile>
        <id>dev</id>
        <build>
            <filters>
                <filter>src/main/filters/dev.filter.properties</filter>
            </filters>
        </build>
    </profile>
    <profile>
        <id>java</id>
        <properties>
            <idna.build.deployment.environment>JAVA</idna.build.deployment.environment>
        </properties>
            <build>
                <filters>
                    <filter>src/main/filters/java.filter.properties</filter>
                </filters>
            </build>
    </profile>

Таким образом, при сборке вы выбираете нужный профиль и в каждом профиле вы определяете переменные для пароля имени пользователя db и т. Д.

yourapp.db.username=UserDev
yourapp.db.password=password

и в вашем database.conf ссылаются на свойство по имени переменной

username=${yourapp.db.username}
password=${yourapp.db.password}

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

0 голосов
/ 22 октября 2010

Хорошее решение от tdammers!

Я делаю это так же, у меня есть набор файлов с разными именами, например production.config или adrian_dev.config. Я проверяю их всех.

Но тогда у меня есть некоторая конфигурация (например, в конфигурации Apache для mod_perl или web.xml для Java), где я указываю, над какой «средой» я работаю, то есть строкой, например, production, поэтому программа просто переходит к, например, production.config без необходимости иметь сценарии развертывания, копирующие вещи. Если вам нужно внести изменения, хорошо просто зайти в файл конфигурации, не осознавая, что вы работаете с скопированным файлом.

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