如何跟踪存储库/项目中特定于系统的配置文件?

发布于 2024-08-19 04:04:02 字数 152 浏览 4 评论 0原文

我有一个 ruby​​ 项目,开发和生产的数据库主机和端口可能不同。我需要一种方法来为这两个环境的脚本获取不同的值。

该项目应该是完整的 - 因此应该有某种方法来指定默认值。我不希望克隆丢失配置文件。所以完全忽略它们是行不通的。

你如何用git解决这个问题?

I have a ruby project, and the database host and port might be different on dev and production. I need a way to get different values for those into my scripts for the two environments.

The project should be complete - so there should be some way to specify default values. I don't want a clone to be missing the config files. So ignoring them completely won't work.

How do you solve this problem with git?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萤火眠眠 2024-08-26 04:04:02

我建议使用:

  • 模板配置文件(用变量名称代替主机和端口值的文件)
  • 能够根据环境(由脚本检测到)将这些变量名称替换为适当值的脚本

Git 解决方案是然后是 git 属性过滤器驱动程序(另请参阅GitPro 书籍)。

过滤器驱动程序由一个clean命令和一个smudge命令组成,其中任何一个命令都可以不指定。
checkout 时,当指定 smudge 命令时,该命令将从其标准输入提供 blob 对象,并使用其标准输出来更新工作树文件。
类似地,clean 命令用于在签入时转换工作树文件的内容。

这样,污点引用的脚本(由 Git 管理)可以用特定于环境的值替换所有变量,而干净的脚本会将其内容恢复到未更改的配置文件中。

clean smudge

当您在 prod 环境中签出 Git 存储库时,smudge 进程将在以下位置生成一个类似 prod 的配置文件:生成的工作树。

I would recommend using:

  • a template config file (a file with variable name in place of the host and port value)
  • a script able to replace those variable names with the appropriate values depending on the environment (detected by the script)

The Git solution is then a git attribute filter driver (see also GitPro book).

A filter driver consists of a clean command and a smudge command, either of which can be left unspecified.
Upon checkout, when the smudge command is specified, the command is fed the blob object from its standard input, and its standard output is used to update the worktree file.
Similarly, the clean command is used to convert the contents of worktree file upon check-in.

That way, the script (managed with Git) referenced by the smudge can replace all the variables by environement-specific values, while the clean script will restore its content to an untouched config file.

clean smudge

When you checkout your Git repo on a prod environment, the smudge process will produce a prod-like config file in the resulting working tree.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文