我有一个包含两个分支的代码库:master和experial。
出于测试目的,我必须使用不同的数据库和apiKey。当我必须合并更改时,这会很麻烦,而且会产生冲突。
是否有根据分支机构名称自动管理的方法?
在master中它是:
mongoose.connect('mongodb://127.0.0.1:27017/' + 'oysterDB');
apiKey = '123ZXC'
在实验中它是:
mongoose.connect('mongodb://127.0.0.1:27017/' + 'testingDB');
apiKey = 'QWERTY123'
实现这一点的一种常见方法是从一个单独的未跟踪文件中读取变量。例如:
- 创建一个名为
config.json
的新文件 - 更新应用程序以从新的
config.json
文件中读取变量 - 将新文件添加到
.gitignore
文件中,这样就不会在repo中跟踪它 - 创建不同版本的文件,如
config.json.master
和config.json.experiemental
,并相应地更改设置。如果实现得当,您可以将这些文件与.gitignore
更改一起提交到repo中,并且该提交可以安全地合并到所有分支中。(考虑从您提交的json文件中省略密码或敏感密钥。( - 创建签出后挂钩。在这个钩子中,您可以查看当前签出的分支(可能使用命令:
git branch --show-current
(,并根据它的内容将适当的json文件复制到config.json
,这样您的应用程序将使用该组变量
一旦执行了上述步骤,一旦切换分支,就会自动更新config.json
,并且您的git status
将保持干净。
提示:任何时候您(或其他人(可能想要自己覆盖配置,您都可以暂时禁用挂钩并手动编辑config.json
。或者,也许您可以将另一个名为config.json.local
的文件添加到.gitignore
文件中,并设置挂钩,以便在您不在两个共享分支之一时将该文件复制到位。这样,如果需要的话,每个开发人员都可以拥有自己的未跟踪配置文件的私人副本。(请注意,新克隆中缺少本地版本。(