gitignore中的文件

我在生产服务器中有一个带有rails应用程序的存储库。

在repo中有.gitignore文件:

... config/database.yaml ... 

每个开发客户端都有一个具有不同config / database.yaml的克隆repo。

我的问题是:

database.yaml在.gitignore中,然后当我运行git clone(在服务器上)时,将不会创建database.yaml,但我需要它。

我想,我做错了什么。 你能看出我的错误在哪里吗?

谢谢你,亚历山德罗

在我的项目中,我通常在database.example.yml中复制一个可用的数据库配置,然后当有人克隆项目时,将database.example.yml复制到database.yml并进行所需的更改。

(这是我对你的第一个问题的 原始答案的副本)

您没有对正确的文件进行版本控制。

你应该版本:

  • 一个database.yaml.template
  • 2个文件(一个用于服务器值,一个用于通用客户端值)
  • 1个脚本能够在结账时构建database.yaml

该脚本将由filter驱动程序的涂抹步骤调用。

替代文字

生成的database.yaml将是“私有的”(从不版本化/推送或拉取),并且可以随意修改。

像robertokl建议的那样保留像database.example.yml这样的模板

当您将应用程序部署到生产服务器时,您应该使用类似capistrano的东西,并且您的capistrano配方(脚本)的一部分将重命名该文件或将正确的database.yml文件放在配置目录中

所有这些database.yaml文件都有一些共同点:你可以提交一个基本配置,并让所有开发客户端在自己的分支中维护它的分支,并填入适当的设置; 无论何时更新,它们都可以在master分支的基本配置之上进行rebase。

aleds – 将数据库.yml放在存储库中通常是个坏主意,这就是你在.gitignore中看到它的原因。 robertokl是关于提供模板文件的。