版本使用每台机器相关的东西控制文件

时间:2011-02-08 20:24:44

标签: version-control mercurial

我的项目中有一个配置文件,其中包含一些与每台机器相关的信息(db用户名,密码,路径)。我理解在这种特殊情况下,我可以强制每个人使用相同的用户名,数据库路径和密码来保持这个简单,但必须有另一种方法来处理这个问题。

如果你愿意,我会使用mercurial,但如果你不熟悉hg细节,我只需要理论上的答案。

5 个答案:

答案 0 :(得分:1)

您需要使用.hgignore文件不在存储库中包含配置文件。

这将允许每个人拥有自己的配置文件版本。

基本上,您只想添加配置文件的相对路径,Mercurial命令将忽略它。所以文件看起来像这样:

config/dbconfig.ext

修改
我刚刚意识到你仍然希望能够对配置文件进行版本控制(误解了问题)。因此,我建议将配置文件中依赖于自己的配置文件的部分移动,然后应用上面的修复程序。这样,你仍然可以在版本控制下获得常规配置信息,并为每个人的机器保留一部分信息。

答案 1 :(得分:1)

处理此问题的常用方法是在版本控制下放置config.example或类似内容,并强制用户复制它并进行必要的更改。这样,用户可以从存储库中下载文件的整体结构,而不会覆盖本地更改。

或者,您可以使配置文件仅提供默认值,并可选择从更高优先级的自定义配置文件(格式相同)中获取用户可能提供或不提供的变量子集。

答案 2 :(得分:0)

我的PHP项目有每台机器数据库。我所做的是在运行时检查主机名。如果它是一个主机,我会提供某些凭据。如果是另一个,请提供不同的凭据。

在某些系统上,我创建了一个凭证列表,然后沿着这条线路进行尝试,直到其中一个连接正常工作。如果列表用尽,则无法建立连接。

答案 3 :(得分:0)

我从未找到过处理此类配置文件的可靠方法。我的最终解决方案是只维护每个文件的版本并使用符号链接。这样每个服务器都有相同的文件路径,但是根文件不同。

答案 4 :(得分:0)

如果不确切知道配置文件中的内容,我将假设您的文件有一些与机器相关的内容(例如,db密码,路径)和其他不是(db hostname,可能是某些路径)相对于基于每台机器配置的路径等。)

如果是这种情况,您要做的是重新配置您的配置文件,以便您有两个配置文件 - 一个用于常见的东西,一个用于机器特定的东西。检查常用的配置,并将机器特定的配置添加到ignore文件。