溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

composer下載的內(nèi)容需要提交到git嗎

發(fā)布時間:2021-06-09 09:28:54 來源:億速云 閱讀:318 作者:小新 欄目:軟件技術(shù)

這篇文章主要為大家展示了“composer下載的內(nèi)容需要提交到git嗎”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“composer下載的內(nèi)容需要提交到git嗎”這篇文章吧。

具體問題:

想問一下各位使用Composer的同學(xué),通過Composer下載后的文件你們會把內(nèi)容提交到Git上嗎?
在官方的Faq上看到Should I Commit the dependencies in my vendor directory這篇文章,有建議是不提交到Git,那么應(yīng)該如何處理切換分支就要重新composer install這個問題呢?如果將vendor提交到版本庫,那又應(yīng)該如何處理包里面帶有的.git文件夾呢?

*修正 composer update 應(yīng)該為 composer install

解決辦法:

事實上無論是分支開發(fā),還是部署到生產(chǎn)環(huán)境,無論composer.json中版本號的通配符規(guī)則你怎么寫,我們最關(guān)心的永遠(yuǎn)是一個最根本內(nèi)容:開發(fā)當(dāng)時,我們用的所有依賴庫,具體的版本號是哪一個?

而這個內(nèi)容是composer.lock文件支持的。composer 本身通過維護(hù) lock 文件,記錄了依賴庫產(chǎn)生任何改動之后,項目中所有依賴庫的具體版本。請閱讀關(guān)于此文件的文檔(https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file)。

你應(yīng)當(dāng)永遠(yuǎn)把composer.lock文件提交到版本庫,并在切換分支或部署之后,使用composer install安裝 lock 文件中指定的具體依賴版本。

從這個意義上講,你是否將vendor目錄提交到主版本庫都是對的。提交與否這是一個互有取舍的選擇:

如果提交:

優(yōu)勢:“拉取即用”的便利。

劣勢:信息重復(fù)。因為你開發(fā)當(dāng)時的具體版本,lock 文件已經(jīng)記錄。也就是說vendor文件夾表述了同一件事情。

劣勢:引入不一致性的風(fēng)險。因為雖然 Composer 保證 lock 文件和vendor目錄一致,但提交到 git 版本庫畢竟是一個人工行為。你難以保證哪一次不會落下二者之一。

如果不提交,優(yōu)劣勢反過來。不再重復(fù)。

我的想法是:我建議你堅持“正確性優(yōu)于易用性”的思想。我的建議是不提交vendor,僅僅使用 lock 文件維持開發(fā)當(dāng)時的依賴庫版本。

如果提交的話,請務(wù)必遵循以下兩個準(zhǔn)則:

(1)務(wù)必保證vendor和composer.lock這兩個文件的提交是同步的。提了一個,必須提另一個。
任何開發(fā),如果任何一次 commit 只交了其中一個,必須追責(zé)。
這個的理由是:雖然我們提交vendor保證拉取下來立刻可用,但是 git 是有部分檢出(checkout)功能的 —— 對于一個 Composer 項目,我有權(quán)遵照 Composer 項目的慣例,不檢出vendor目錄,而是拉取下來實務(wù)代碼之后隨手一個composer install,你不能說我錯。
(如果誰說這個是錯的,我支持你分分鐘上sf和知乎曝光你的無良公司和技術(shù)主管)

(2)務(wù)必按照Composer對于提交vendor文件夾的建議(https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md),忽略掉子庫的所有.git目錄,只提交vendor中的實務(wù)代碼。
相信我,vendor中的實質(zhì)代碼,和vendor/**/.git下git庫本身的管理用文件,絕對是冰山的水上部分和水下部分的關(guān)系。不忽略,會死人的,不夸張。

另外必須指出的是:分支開發(fā)時,就算不通過版本庫同步vendor,而只同步composer.lock,也不會造成時間的浪費。

兩個分支切換時,無非是兩套具體版本換來換去。而 Composer 本身對所有下載的庫都是緩存的。每次拉分支之后的composer install必然命中全部的緩存,而不需要重復(fù)消耗下載的時間。

以上是“composer下載的內(nèi)容需要提交到git嗎”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI