2

为什么 CakePHP 默认将 app/Config 放在 .gitignore 中?

我理解将 app/tmp 放在 .gitignore 中,并且也理解他们为什么将根 /plugins 和 /vendors 目录,因为它们是为跨多个项目共享的插件和供应商而设计的。但为什么是应用程序/配置?我会认为它包含您在版本控制中想要的那种东西,例如 database.php 和 bootstrap.php。

4

2 回答 2

2

我想这与数据库配置有关,实际上是您在版本控制中不想要的。

想象一下,如果您的 git repo 中有数据库配置文件,并且有人拉取,他们将拥有您的数据库设置,然后他们将编辑数据库配置文件以满足他们的需求,现在它就变成了一个有数据库的乒乓球游戏。 .php 文件。坦率地说,这会非常非常烦人。

我的意思是,如果每个人都有相同的配置设置,它会起作用并且可能有点方便,但是谁拥有跨机器的所有数据库配置?

另一方面,bootstrap.php 我有点同意,因为引导通常是针对一个项目的,而该项目依赖于这些依赖项。尽管如此,如果您想为不同的环境使用不同的插件怎么办?例如使用 sendgrid.com 在您的开发副本上发送电子邮件,并在实时服务器上使用 SMTP?

在我看来,忽略配置目录更简单。它将配置留给开发人员。

于 2013-01-17T11:10:16.423 回答
1

接受的答案是正确的,因为您不希望存储库中的数据库配置,但稍微错过了一个重要点。

您不想将数据库配置包含在存储库中;如果有人可以访问这个,他们将可以访问敏感的详细信息,例如您的数据库的登录名/密码,因此可以直接访问它!

在 CakePHP 3.xapp.php中,默认情况下仅忽略包含数据库设置的配置文件。包含一个app.default.php文件,该文件应用作人们在本地计算机或服务器上设置应用程序的模板,而无需在存储库中存储敏感数据。

If you're deploying an app with something like Capistrano or Rocketeer then a good practice is to keep the file containing the database configuration in a shared directory and symbolically link to this when deploying. That way, apart from initial setup, you do not need to worry about losing the config when deploying from a repository.

于 2015-07-21T17:56:22.973 回答