git具有其他名称的文件

时间:2013-12-21 10:37:43

标签: php git

假设当我在计算机上运行命令时,我将环境定义为:

define('HOST', 'localhost');

但是当我在服务器而不是那个上提交时,我想要出现另一个代码:

define('HOST', 'server');

所以我创建了两个文件index.php和index2.php(应该由脚本动态创建)

如何代表index.php提交index2.php?

3 个答案:

答案 0 :(得分:1)

对此最好的解决方案是将环境变量保存在未被git跟踪的文件中,并将其包含在php文件中。

例如:

的index.php

require_once('parameters.php');
// rest of your code

parameters.php(适用于本地环境)

define('HOST', 'localhost');
// other parameters that you might want to define for localhost

的.gitignore

./parameters.php

正如您所见,参数文件现在包含您的本地配置,并且不会被git跟踪。您可以使用该环境的配置在远程服务器上创建另一个parameters.php文件。

parameters.php(适用于远程环境)

define('HOST', 'server');
// other parameters that you might want to define for localhost

答案 1 :(得分:1)

似乎您遇到了问题,因为某些文件取决于您的配置,并且您的计算机和服务器上没有相同的配置。

解决方案可能是在Git中放入一个带有通用配置的文件,并让它被覆盖。

这就是Dokuwiki的作用:在他们的回购中有一个local.php.dist,但是用户可以提供local.php来覆盖它。这个local.php并不打算用Git(and is in fact gitignored

答案 2 :(得分:0)

我通常使用(web)服务器中设置的环境变量。例如,在Apache配置或.htaccess文件中:

SetEnv MYAPP_ENVIRONMENT production

在您的应用中,您可以针对不同的环境进行不同的配置;我以YAML文件的形式保存我的:

default:
    foo: bar
    baz: 42
production:
    foo: blarg
    baz: 84

然后查找环境变量:

$env = getenv('MYAPP_ENVIRONMENT');

根据要使用的配置决定。

对于不应存储在存储库中的敏感值(如数据库密码),我甚至允许通过合并到配置文件中的环境变量设置任意值。 E.g:

SetEnv MYAPP_FOO blörg

(上述内容会在任何配置中覆盖foo。)