文章彙整

Magento Cloud – 如何在專案中使用Patch進行修正

Astral WebBy Astral Web 5 months agoNo Comments
首頁  /  Magento  /  Magento Cloud – 如何在專案中使用Patch進行修正

現今在專案中,透過composer安裝第三方套件來使用是極為普遍的方式,使用composer安裝的程式碼是來自網路的公版軟件,也就意味著不可任意修改。而實務上,難免會遇到第三方套件存在bug,且尚未釋出修正。我們無法直接去修改vendor中的程式,因為每次composer更新安裝時,程式就會再次被公版覆蓋掉。針對這樣的修正需求,Magento Cloud在部署過程設計了一個Patch機制,可以在composer install完畢,去執行修改vendor裡特定的程式檔案。

要執行Patch,首先需要製作Patch檔。假設我們要為檔案 vendor/magento/framework/Phrase.php 增加一行如下的註解:

先複製出檔案vendor/magento/framework/Phrase-fix.php來進行修改 

修改完畢後,以root身份在專案根目錄下,執行如下指令

diff -rupN  vendor/magento/framework/Phrase.php vendor/magento/framework/Phrase-fix.php > demo.patch

此指令是將原檔Phrase.php與新檔Phrase-fix.php做比較,產生差異紀錄的demo.patch檔。

接著開啟demo.patch進行調整:

首先,增加git diff的資訊,修正為原檔的異動:

diff –git a/vendor/magento/framework/Phrase.php b/vendor/magento/framework/Phrase.php

index 3ee2rd7..8349152 111644

index意義上是git的hash,不過由於此處是模擬資訊,任意給定即可。

將檔案路徑做如下調整:

— a/vendor/magento/framework/Phrase.php 2021-04-14 23:05:30.077087570 +0800

+++ b/vendor/magento/framework/Phrase.php 2021-04-14 23:05:22.469044185 +0800

調整過後的patch檔內容:

接下來就可以放進magento cloud專案,把這個demo.patch放到cloud專案git裡的 m2-hotfixes 資料夾,若無此資料夾,自行建立即可。

最後一步推上cloud遠端,完成部署後,進到cloud server看看吧!

先檢查一下目標檔案的內容:

如預期已加上客製的註解,另外Magento Cloud也有工具用來查看patch狀態,可以執行以下指令:

php ./vendor/bin/ece-patches status

出現剛剛上傳的patch檔,並且顯示已執行。

大家可能已注意到列表上除了我們自製的patch,還有很多未被執行的patch。這些都是Magento 釋出的一些選擇性官方修補檔。使用方式很容易,例如想要修補MDVA-12304跟MDVA-30972,只需在檔案.magento.env.yaml加上如下設定即可:

stage:

  build:

    QUALITY_PATCHES:

      – MDVA-12304

      – MDVA-30972

各位可以自行試試,在此就不贅述囉。

對於vendor裡檔案的修正,Magento Cloud設計了Patch機制來應對,但如果今天少了這段機制,也還有其他選擇,例如fork到個人git上,改成安裝自行修正過後的版本,不過這個做法要特別注意該軟件的license聲明是否有所限制。希望今天的分享,有幫助到大家進一步完善自己的Magento專案,我們下次見囉!

 

如果有您有更多疑問可以詢問我們,未來會撰寫更多電商網站相關文章,您想知道什麼嗎?歡迎在下方留言給我們。或追蹤我們的粉絲專頁IG,就不錯過最新文章喔!

想學習更多Magento設定嗎?請見:Magento教學導覽

 000

推薦文章

Categories:
  MagentoMagento開發

留下回應

你的電子郵件地址不會被公開.