2017-09-09 50 views
2

爲什麼開發人員會提交.dist文件而不是實際的文件?爲什麼開發人員提交.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_csphpunit.xml致力於爲.dist文件?

代碼格式規則在.php_cs.dist,如果每個貢獻者都應遵循相同的規則,爲什麼.dist文件?

更新

推理背後parameter.yml.dist是顯而易見的,但是爲什麼特別.php_cs不承諾?爲什麼有人會改變包含代碼格式規則的.php_cs?是不是.php_cs的全部點,每個貢獻者使用相同的規則來格式化他們的代碼?

請回復只關注這兩個文件。

+0

請參閱[我的回答有點不同的問題](https://stackoverflow.com/a/46134516/1256452)。 – torek

+0

「.dist」通常表示「此文件適合分發,但不適用於實際使用」。這意味着這是一個模板文件,實際的文件也可能在該存儲庫中被忽略。在本地克隆之後,您應該複製.dist文件,刪除.dist部分,並對其進行適當更改以使軟件在系統上運行。 –

+0

parameter.yml.dist背後的推理很明顯,但爲什麼.php_cs沒有提交?爲什麼有人會改變包含代碼格式規則的.php_cs?是不是每個貢獻者使用相同規則來格式化他們的代碼的.php_cs的全部要點? – PMoubed

回答

0

,我發現我的答案在這裏:https://github.com/symfony/recipes/issues/41

的區別是,如果 phpunit.xml不存在的PHPUnit將加載phpunit.xml.dist文件。所以你不需要複製它,除非你想要做特殊的東西。所以在回購 犯了phpunit.xml.dist(以及gitignore添加phpunit.xml)正要繼 PHPUnit的最佳實踐

落後於這些特定的文件.dist文件的原因是PHPUnit的和php-cs-fixer在沒有本地文件的情況下使用.dist文件。

3

你可以看到.dist文件作爲模板文件。在您的具體分配上,配置可能略有不同。使用dist文件,您可以簡單地將它們複製到例如phpunit.xml並調整它以適應您的需求。 (例如設置一些特定的ENV變量等)。

小側面說明:在Symfony的項目,另一種常見的DIST文件app/config/parameters.yml.dist

+0

parameter.yml.dist背後的推理很明顯,但爲什麼.php_cs沒有提交?爲什麼有人會改變包含代碼格式規則的.php_cs?是不是每個貢獻者使用相同規則來格式化他們的代碼的.php_cs的全部要點? – PMoubed

0

因爲這樣做,你讓你的本地(常常是「開發」)和遠處的配置之間的差異。這也使您可以保護您的私人數據,而不會忘記設置所需的參數。

例如,symfony有一個「parameters.yml」文件和一個「parameters.yml.dist」文件。你的參數包含真實數據,用於你的實際環境,如果你尊重好的做法,永遠不會提交,因爲你會推送一個包含數據庫名稱,用戶名,郵件主機和所有絕對敏感數據的文件(使用祕密令牌也以形式)。

所以,你有一個DIST文件,其中包含相同的密鑰,但沒有價值:

例子: 參數。陽明:

# 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

除了保護數據,其他的原因可能是在本地並部署應用程序。

再見:)

+0

parameter.yml.dist背後的推理很明顯,但爲什麼.php_cs沒有提交?爲什麼有人會改變包含代碼格式規則的.php_cs?是不是每個貢獻者使用相同規則來格式化他們的代碼的.php_cs的全部要點? – PMoubed

+0

我不確定這個具體的例子,但考慮到代碼寫作有很多規則和標準,我認爲這允許人們設置格式來適應他們的習慣;同時仍然提供「推薦」格式(包含在dist文件中)。 你也可以反轉這個:提交的人不喜歡用默認規則編寫他的代碼,他用他自己的配置使用他的首選,但不推動它,所以你得到一個乾淨的配置文件。 – Artandor

0

這是同樣的原因php_cs.dist,你可以將本地php_cs自定義規則,文件和需要分析的,而不是使用命令行選項自定義規則和更多的目錄:例如,該--dry-run選項顯示需要修復,但沒有實際修改其中的文件:

$ php php-cs-fixer.phar fix /path/to/code --dry-run 

可用here選項ECT,可以是集.php_cs本地文件。

相關問題