如何在git分支中处理配置文件(或数据库信用)?

时间:2018-10-19 13:07:53

标签: php git deployment git-merge git-rebase

我有一个简单的Web应用程序。我有一个用于实时版本的生产数据库,以及一个用于开发的测试数据库。我将数据库凭据存储在配置文件中,如下所示:

<?php
return array(
    'hostname' => 'myhostname',
    'username' => 'myuser',
    'password' => 'mypassword',
    'dbname' => 'myLiveDB',
);
?>

此文件由git跟踪。在开发分支上,我希望使用不同的凭据使用相同名称的文件。我要在此分支机构中进行工作,先进行测试,然后在要部署新版本时合并到主服务器中。

我从不想在合并/变基操作期间看到此文件更改。每个分支都应始终保留自己的版本,并且只能通过直接提交到该分支来进行更新。

到目前为止我所考虑的:

  • .gitattributes个文件,其中merge=ours个配置文件+ git config --global merge.ours.driver true。我认为这不适用于变基,这是一个问题。我也不确定是否其他所有从事此工作的开发人员是否需要手动更新其配置,或者是否有办法在存储库级别更改该设置?
  • 放弃配置文件,重写所有内容以使用环境变量。为服务器和每个开发人员手动设置它们。
  • 存储库中有一个config_test.php和一个config_prod.php。部署时,让脚本查看我们要从哪个分支进行部署,并在将其重命名为config.php
  • 的同时复制正确的文件

1 个答案:

答案 0 :(得分:1)

我想第三点可能是好的,也是正确的方法。在spring-boot(java)中,我们过去在yamal文件(application.yml)中使用了不同的配置文件,其名称分别是dev,test,prod等,而spring本身将在该特定环境中运行时使用确切的文件。检查类似是否存在。

但是,就您而言,请考虑是否需要git下的文件。
认为您的主目录下有一个文件(例如/home/myname/testfile/development.properties)。并更改代码,以便如果此属性文件存在,则采用它,否则采用另一种。