如何在git中处理不稳定但必要的文件?

时间:2018-12-31 12:31:45

标签: git

例如banne.gifconfig_mysql.php
banner.gif在编码时是必需的,因为我们需要检查css布局,而设计人员始终会对其进行更改。
在进行编码时,config_mysql.php是必需的,因为我们需要该文件来运行mysql,而我们不能使用production version

我不确定是git add个文件还是将这些文件放在.gitignore中。
在git中处理这类文件的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

在源代码控制的代码存储库之外保留特定于环境的配置值通常是个好主意,因为代码应该可以在任何地方运行,只有配置可以更改。

解决方案1:示例文件

而不是将config_mysql.php保留在存储库中,而是保存一个名为config_mysql.php.sample的文件并将config_mysql.php添加到.gitignore

从本地主机克隆或分支的人可以指定其属性值config_mysql.php,该属性值将添加到.gitignore中,因此不会影响git树。开发人员仅在添加/删除配置后才编辑config_mysql.php.sample文件(这是需要添加到源代码存储库中的信息)

解决方案2:将配置值保留在环境变量中

不是在config_mysql.php.sample中指定键的实际值,而是将其从环境变量中拉出。

$db_host = $_SERVER["MYAPP_DB_HOST"];
$db_user = $_SERVER["MYAPP_DB_USER"];
// and so on

这样,只有一个配置文件,与代码一起在源代码控制下,并且开发人员通过设置环境变量来设置其本地值。需要使用这些环境变量来准备诸如生产和升级之类的共享环境,否则部署工具可以负责注入它们。

摘要

我倾向于更好地喜欢解决方案2,因为不需要示例文件,并且很容易覆盖配置)。如果未设置环境变量,甚至可以通过提供默认值来扩展它。这不适用于所有类型的配置值,应谨慎使用,以免意外连接到例如生产数据库

答案 1 :(得分:0)

没有一个答案总是正确的。它可以取决于许多因素。以下是一些非常笼统的建议,您可以从现有问题/答案中找到更多信息。

图像文件

如果它们很小和/或不经常更改,则可以考虑add对其进行修饰,而不必为此担心太多。虽然git不能很好地处理二进制文件,但它们引起的主要问题是存储库过大。而且尺寸适中也不是什么大问题。

出于您描述的目的,您可以使用尺寸适当的占位符来减小尺寸(并可能减少更改的频率)。

如果图像文件将成为问题,则可以使用git lfs之类的工具,该工具可以通过为大型二进制文件之类的文件提供辅助存储库来控制存储库大小。

特定于环境的文件

我的一般建议是.gitignore,并使用您的构建项目为构建的目标环境引入(和/或构建)正确的版本。例如,您可以检入一个模板文件,从中可以构造文件的每个环境版本,然后让构建过程根据指定环境的变量来填写模板。

答案 2 :(得分:0)

我认为您可以使用banner.gifconfig_mysql.php的两个版本。

例如,您可以检入Git这些文件: config_mysql.phpconfig_mysql_dev.php

在生产中,使用config_mysql.php文件。

在本地计算机上,您可以将文件config_mysql_dev.php重命名为config_mysql.php 使用它。

banner.gif ...可以考虑类似的事情