为什么开发人员会提交.dist文件而不是实际文件?
例如: https://github.com/FriendsOfPHP/PHP-CS-Fixer
.php_cs.dist
phpunit.xml.dist
https://github.com/symfony/symfony
.php_cs.dist
phpunit.xml.dist
为什么.php_cs
和phpunit.xml
作为.dist
文件提交?
代码格式规则在.php_cs.dist
中,如果每个贡献者都应遵循相同的规则,为什么会.dist
提交文件?
更新
parameter.yml.dist
背后的推理是显而易见的,但为什么特别是.php_cs
没有提交?为什么有人会更改包含代码格式规则的.php_cs
? .php_cs
并不是每个贡献者都使用相同的规则来格式化他们的代码?
请回复对这两个文件的问候。
答案 0 :(得分:3)
您可以将.dist
个文件视为模板文件。根据您的具体分布,配置可能略有不同。使用dist文件,您只需将它们复制到例如phpunit.xml
并调整它以满足您的需求。 (例如设置一些特定的ENV变量等)。
小方注释:Symfony项目中另一个常见的dist文件是
app/config/parameters.yml.dist
答案 1 :(得分:0)
因为这样做会使您的本地(通常是" dev")和远程配置产生差异。这也允许您保护您的私人数据,而不会忘记设置所需的参数。
例如,symfony有一个" parameters.yml"文件和" parameters.yml.dist"文件。您的参数包含实际数据,用于实际环境,如果您尊重良好实践,则永远不会提交,因为您将推送包含数据库名称,用户名,邮件主机和所有类型的绝对敏感数据的文件(使用的秘密令牌)在表格中也是如此。
所以,你有一个dist文件,包含相同的键,但没有值:
示例: parameters.yml:
# This file is auto-generated during the composer install
parameters:
database_host: mysql
database_port: null
database_name: portfolio
database_user: artandor
database_password: supersecretpassword
mailer_transport: smtp
mailer_host: smtp.gmail.com
mailer_user: artandor
mailer_password: supersecretaswell
secret: 070950937b085d66fb1c59978ab9c47d4a420e32
你的dist文件看起来像:
# This file is a "template" of what your parameters.yml file should look like
# Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production.
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
parameters:
database_host: 127.0.0.1
database_port: ~
database_name: symfony
database_user: root
database_password: ~
# You should uncomment this if you want to use pdo_sqlite
#database_path: '%kernel.project_dir%/var/data/data.sqlite'
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: ~
mailer_password: ~
# A secret key that's used to generate certain security-related tokens
secret: ThisTokenIsNotSoSecretChangeIt
很抱歉很长的帖子,想为你说清楚:))
通常的过程是推送dist文件,然后一旦你把它拉到服务器上,就可以了
cp parameters.yml.dist parameters.yml
除了保护数据之外的其他原因是在本地应用程序和已部署的应用程序之间进行不同的配置。
再见:)
答案 2 :(得分:0)
这与php_cs.dist的原因相同,您可以通过本地php_cs来自定义需要分析的规则,文件和目录,而不是使用命令行选项来自定义规则等等:例如--dry-run
选项显示需要修复但未实际修改的文件:
$ php php-cs-fixer.phar fix /path/to/code --dry-run
可用选项here,可以在.php_cs本地文件中设置。
答案 3 :(得分:0)
我在这里找到了答案:https://github.com/symfony/recipes/issues/41
不同之处在于PHPUnit将加载phpunit.xml.dist文件 phpunit.xml不存在。除非你这样做,否则你不需要复制它 想做特别的事。所以在repo中提交phpunit.xml.dist (并在gitignore中添加phpunit.xml)就是关注 PHPUnit最佳实践
这些特定文件的.dist文件背后的原因是phpunit和php-cs-fixer在没有本地文件的情况下使用.dist文件。