代码之家  ›  专栏  ›  技术社区  ›  Mitya

包含文件的外壳,但包含已编辑的内容?

  •  0
  • Mitya  · 技术社区  · 5 年前

    假设我的远程项目有一个文件, database.php ,将数据库连接信息作为数组。

    我想在我的回购协议中包含该文件,但要修改其内容。你可以说我希望物理文件(shell)在repo中,而不是内容中。

    这样的想法是,克隆我的repo(通过localhost进行操作)的开发人员填写自己的localhost db凭据,而看不到我的服务器db凭据。

    Git有没有办法支持这种事情,或者我的想法有问题?

    现在我唯一想到的就是保留敏感文件 外面的 告诉我的开发人员自己做一个本地使用的,永远不要 git add 它。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Lix    5 年前

    这里一种可能的方法是只有当“物理”文件在远程服务器上时才生成它。您可以为此使用环境变量;您可以将它们读入变量:

    # database.php
    $user = getenv('DB_USER');
    $password = getenv('DB_PASSWORD');
    

    将应用程序部署到服务器时,需要确保设置了正确的环境变量(请查看有关此的宿主提供程序文档)。

    对于基于Linux的服务器,可以创建如下环境变量:

    export DB_USER="my-user"
    export DB_PASSWORD="Correct Horse Battery Staple"
    

    现在,您可以将“敏感”文件提交到GitHub,因为它实际上不包含任何仅包含数据的占位符。您的敏感数据将只存在于远程主机的环境变量中。

    这种方法还允许您为不同的环境拥有不同的数据库凭据,而无需更改代码。您只需要根据应用程序的运行位置更改环境变量-本地/登台/生产。

        2
  •  1
  •   Moshe Fortgang    5 年前

    通过使用Linux服务器,您可以使用 database-prod.php 带符号链接到 database.php ,并插入 数据库.php .gitingnore