我最近從svn
切換爲git
,我有點糊塗了。Yii2和Git忽略文件
在yii2框架,有很多.gitignore
文件,據我所知,使用這些文件。但我是一個有點困惑的原因是vendor
目錄忽略。
在那裏的文件,需要在兩個我的開發和生產環境。
當我使用svn
時,我曾經在那裏提交文件,但是我做錯了嗎?什麼是這樣做,如果我忽略了vendor
目錄的正確方法。
我是否需要在每次執行推送時在兩個環境上運行composer update
?
我最近從svn
切換爲git
,我有點糊塗了。Yii2和Git忽略文件
在yii2框架,有很多.gitignore
文件,據我所知,使用這些文件。但我是一個有點困惑的原因是vendor
目錄忽略。
在那裏的文件,需要在兩個我的開發和生產環境。
當我使用svn
時,我曾經在那裏提交文件,但是我做錯了嗎?什麼是這樣做,如果我忽略了vendor
目錄的正確方法。
我是否需要在每次執行推送時在兩個環境上運行composer update
?
正如@chris所說---它畢竟只是一個推薦,它取決於你選擇上傳和維護供應商庫或不。爲了得到它是如何工作的想法,去composer.json
你的應用程序裏面,你會看到這樣的內容:
"require": {
"php": ">=5.4.0",
"yiisoft/yii2": ">=2.0.6",
"yiisoft/yii2-bootstrap": "*",
"yiisoft/yii2-swiftmailer": "*"
},
"require-dev": {
"yiisoft/yii2-codeception": "*",
"yiisoft/yii2-debug": "*",
"yiisoft/yii2-gii": "*",
"yiisoft/yii2-faker": "*"
},
在哪裏,如果需要,您可以編輯和一組任意庫的具體版本。現在走這條線:
"yiisoft/yii2-bootstrap": "*"
每次做composer update
作曲只會得到其回購從packagist.org(看到它here)時,將安裝找到的最後一個穩定版(什麼"*"
手段)然後將其解決依賴由此可以看出裏面\vendor\yiisoft\yii2-bootsrap\composer.json
:
"require": {
"yiisoft/yii2": ">=2.0.6",
"bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*"
},
最後一行將garante的蠢的最新穩定版本的安裝ter Bootstrap 3.3.x。
在請求packagist.org後,這些確切的版本均已下載,每當您從任何機器上執行composer update
時,都會將其保存到供應商文件夾。如果您上傳twitter引導程序3.3.2以及您的項目作爲示例,並且團隊成員將其下載回來而不必執行composer update
,那麼他可能會發現自己陷入了一個問題,該問題假設在版本3.3.3中得到修復,並且他從不需要知道他是否只是進行了更新。
這是作曲家團隊說要回答的問題是什麼:Should I commit the dependencies in my vendor directory?:
一般建議不......
...雖然這是很有誘惑力的承諾它在某些環境下,它會導致 幾個問題:
- 大型VC庫的大小,當你更新代碼的diff。
- 在您自己的VCS中複製所有依賴關係的歷史記錄。
- 將通過git安裝的依賴關係添加到git倉庫中會將它們顯示爲子模塊。這是有問題的,因爲它們不是真正的 子模塊,並且會遇到問題。
也想就如何之大,應分配給github.com如果每個項目有額外的磁盤空間與它的供應商上傳。並想想在那裏可以找到多少完全相同的twitter bootstrap副本。
這是正確的。通常你不提交供應商的東西,因爲那是在其他地方受版本控制的第三方代碼。您應該使用作曲家來處理更新供應商特定的代碼。這意味着每次部署應用程序時,您都應該運行composer update
,除非您已經擁有所有供應商代碼,並且沒有任何所需內容的更新。
好吧,我明白你的觀點,但對我來說仍然存在一些困惑。假設我要開始一個新項目,我該從哪裏開始?在我的服務器(procuction)或本地機器(開發)上,然後將其推送到我的git ..現在,一旦所有東西都設置好了,並且可以說我開發了一個具有作曲者依賴關係的模塊,當我推動它時,我必須在那裏做一個作曲家更新,這會將相關性放在那裏。但如果我在模塊上工作了很長時間,並且依賴項已經更新,但我沒有更新我的本地作曲者,我的服務器將有不同的版本,對不對? – user2707590
我不太確定,如果我理解正確,但composer.json(dev&prod)應該是相同的。這就是爲什麼你也可以在版本控制下使用它。所以在完成'composer update'後,dev和prod機器應該有相同的版本。 除此之外,它只是一個建議。如果您知道這一點,讓供應商文件夾在版本控制下是完全正確的。但是,編寫器更新時可能會覆蓋其中的代碼。 –