如何在开发人员之间使用Git和不同的数据库配置?

时间:2012-03-14 19:15:55

标签: php database git codeigniter configuration

我正在和朋友一起在Code Igniter中开发一个应用程序。因为我们两个人在我们的机器上都有不同的数据库登录,所以我们有不同的“config / database.php”文件。

我怎么能告诉Git我们俩都有不同的数据库配置?现在,我们每次拉动都会遇到合并冲突,因为“config / database.php”对我们来说不同。

4 个答案:

答案 0 :(得分:6)

我通常将/application/config/database.php文件重命名为/application/config/database.default.php(版本化)并将原始路径添加到.gitignore文件中。然后,每个开发人员将默认(无版本文件)复制回原始路径并根据其本地设置进行编辑。

这成为服务器设置过程中的一个额外步骤,但它可以避免您提到的悲伤。

答案 1 :(得分:1)

有两个选项:

  1. 不再版本控制此文件(我将git-command留给您的研究)
  2. 使用.gitignore文件
  3. 结果你将在旧地方有文件,但不会再干扰“另一个”文件

答案 2 :(得分:1)

我们通常将数据库配置文件放在.gitignore文件中以避免这些问题。无论如何不要将这些配置文件与他们的用户/密码放在git中是个好主意 我们经常会保留一个config/database.yml.template文件(我们使用rails)作为人们复制到config/database.yml然后编辑到本地计算机的基础。 database.yml文件名放在.gitignore文件中(在版本控制下共享)。

可以看到gitignore的基础知识here 其他信息,包括要避免的陷阱:Ignore files that have already been committed to a Git repository

答案 3 :(得分:1)

有一个文件根据环境变量选择配置。在服务器的配置中设置该变量。

<?php

if (getenv('WHOS_CONFIG') == 'mine') { … } else { … }

并在服务器配置中(你不会验证,否则同样的问题再次出现:) 例如对于Apache:

<VirtualHost *>
SetEnv WHOS_CONFIG mine
…

或者,使用一个包含database.php文件的公共database.local.php配置文件,该文件未进行版本控制。后者将覆盖您需要的变量。