基于git分支自动更改代码



我有一个包含两个分支的代码库: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'

实现这一点的一种常见方法是从一个单独的未跟踪文件中读取变量。例如:

  1. 创建一个名为config.json的新文件
  2. 更新应用程序以从新的config.json文件中读取变量
  3. 将新文件添加到.gitignore文件中,这样就不会在repo中跟踪它
  4. 创建不同版本的文件,如config.json.masterconfig.json.experiemental,并相应地更改设置。如果实现得当,您可以将这些文件与.gitignore更改一起提交到repo中,并且该提交可以安全地合并到所有分支中。(考虑从您提交的json文件中省略密码或敏感密钥。(
  5. 创建签出后挂钩。在这个钩子中,您可以查看当前签出的分支(可能使用命令:git branch --show-current(,并根据它的内容将适当的json文件复制到config.json,这样您的应用程序将使用该组变量

一旦执行了上述步骤,一旦切换分支,就会自动更新config.json,并且您的git status将保持干净

提示:任何时候您(或其他人(可能想要自己覆盖配置,您都可以暂时禁用挂钩并手动编辑config.json。或者,也许您可以将另一个名为config.json.local的文件添加到.gitignore文件中,并设置挂钩,以便在您不在两个共享分支之一时将该文件复制到位。这样,如果需要的话,每个开发人员都可以拥有自己的未跟踪配置文件的私人副本。(请注意,新克隆中缺少本地版本。(

最新更新