我正在开发一个 Web 数据库,该数据库已经用于十几个单独的安装,其中大部分由我自己管理。每个安装都有相当多的本地配置和定制。刚刚从 svn 切换到 mercurial,我想利用它的分布式特性来跟踪本地修改。我已将每个已安装的服务器设置为自己的存储库(并将 apache 配置为不为 .hg 目录提供服务)。
我的困难是开发树还包含本地配置,我想避免将它的每一点都放在未版本化的配置文件中。那么,我该如何设置以避免将本地配置传播到主存储库和已安装的副本?
示例:我有一个很长的 config.ini 文件,应该对其进行版本控制和分发。“干净”版本包含数据库连接参数的占位符,我不希望开发服务器的密码最终出现在已安装副本的存储库中。但有时我会做出一些我确实需要传播的更改(例如,新的默认值)。有几个文件处于类似情况。
到目前为止,我能做的最好的事情是安装 mq 并将本地修改变成一个补丁(实际上是两个补丁,具有逻辑上独立的变更集)。每次我想向本地存储库提交常规变更集时,我都需要弹出所有补丁、提交修改并重新应用补丁。当我准备好推送到主仓库时,我必须再次弹出补丁,推送并重新应用它们。这一切都令人费解且容易出错。
我能看到的唯一另一种选择是忘记推送,只将变更集作为补丁传播,这似乎是一个更糟糕的解决方案。有人可以建议更好的设置吗?我无法想象这是一个如此不寻常的配置,但我还没有找到任何关于它的信息。
编辑:在跟进这里的建议之后,我得出的结论是,命名分支加上 rebase 提供了一个简单且可行的解决方案。我以自己的答案的形式添加了描述。请看一下。