SVN:只读/仅结帐文件

时间:2010-10-22 09:02:54

标签: svn

我正在寻找的是:

假设我有一个文件“database.conf”,它有一些数据库连接的默认值(dbname,user,password等)。每个人都需要具有不同设置的文件(例如密码)。但是,不应将此文件的本地更改提交到存储库。因此该文件应该是“仅结帐”。这可能吗?

4 个答案:

答案 0 :(得分:3)

我通常的解决方案是创建一组具有不同名称的配置文件,并将它们放在源代码控制下,并与脚本一起将合适的文件复制到实际位置;然而,将要使用的配置文件仍然是未版本控制的。 例如,我可以有一个文件夹'config_files',包含文件'dev.config','production.config','qa.config'等;我的部署脚本会负责将正确的脚本复制到正确的位置(例如,'App.config')。

你甚至可以使用钩子来自动化这个。

答案 1 :(得分:2)

您可以创建要放入存储库的database.conf.sample,并为ignore文件设置database.conf属性。

答案 2 :(得分:0)

tdammers的解决方案很好!

我是这样做的,我有一组不同名称的文件,如production.configadrian_dev.config。我把它们全都检查了。

但后来我有了一些配置(例如在Apache配置中为mod_perl,或者是web.xml用于Java),其中我说明了我正在处理的“环境”,这是一个字符串,例如production,所以该计划仅限于production.config无需部署脚本复制内容。如果您需要进行更改,只需检查配置文件,而不必意识到您正在处理复制的文件。

答案 3 :(得分:0)

如果您使用Maven,则可以为每个不同的环境创建配置文件。

e.g

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文件。