文章彙整

使用submodule管理git子專案

Astral WebBy Astral Web 1 month agoNo Comments
首頁  /  Magento  /  使用submodule管理git子專案

使用Git來管理程式版本,身為開發者一定不陌生。在Magento專案裡,如果遇上原生不支援的功能,我們會自己開發模組,如果這個模組被設計可通用於不同專案,那麼集中一個地方去開發,肯定是較好的維護方式。今天要跟大家分享git本身即有功能可達到此目的,透過submodule的建立,一個模組專案,可以被安裝在不同Magento專案之下,一旦模組有更新異動,各專案可自行同步到最新程式,一起來看看吧!

假設我們現在有個Magento專案,另外備有已開發可被使用的的模組專案

Magento專案: DemoProject

模組專案: TaiwanInvoice

首先,在主專案下, 透過git指令將模組專案加到其submodule

git submodule add <模組專案git url> <主專案下的目錄位置>

接著查看submodule狀態,可以看出目前已加入該子專案

git submodule status

查看主專案狀態,會得到提示說有尚未commit的異動

git status

接著正常執行commit,並上推至主專案遠端

查看github上主專案的commit,對照模組的commit,可以觀察出實際作法是在主專站的commit中,紀錄對應到子專案的commit hash。

現在要為此專案修改模組的內容,先進到模組資料夾 app/code/AstralWeb/TaiwanInvoice/

注意在這裏所下的git指令是針對子專案,也就是說,直接在這個資料夾裡修改後即可commit上推到模組遠端。這裏我們要為此專案做一個特殊版本,因此另開分支 demo_project

簡單的修改README.md後上推到遠端

接著往上查看主專案狀態,得知模組有異動

要注意的是,剛剛我們變更了submodule所使用分支,因此現在需要更新這個資訊,需修改 .gitmodules 內容

接著一樣commit上推到遠端

觀察github上的主專案的 commit,一樣是紀錄了模組那頭對應的hash,這樣一來,就可以很清楚知道主專案裡對於的子專案異動,是在哪個commit了。

到這裡我們都是在主專案裡異動,如果這個模組在他處被更新呢?我們先在別的地方為demo_project 分支再上一個commit。

接著在主專案裡下指令,進行submodule的更新

git submodule update –recursive –remote

查看狀態,可知子專案有新的commit

一樣直接主專案commit上推遠端即可

 

以上就是創建與更新的步驟,接著來看初始化的方式

現在主專案已經有了子專案,假設重新在別的地方下載專案

查看submodule狀態,確實有紀錄

但子專案資料夾 app/code/AstralWeb/TaiwanInvoice/ 裡卻沒有東西

這時需要下初始化指令,再進行更新

git submodule init

git submodule update –recursive –remote

這樣檔案就下載成功囉!

 

最後就是子專案的解除方法

首先,刪除submodule的紀錄

git submodule deinit -f <子專案資料夾路徑>

接著刪除子專案的.git資訊

rm -rf .git/modules/<子專案資料夾路徑>

刪除實體檔案

最後一步commit上推遠端!

以上就是使用git submodule的方式,各位不妨利用它集中管理Magento開發使用的共通模組,除了submodule,我們也可以將模組獨立成一個git專案,選擇透過composer的方式去安裝,只是這種方式,在發布與異動上,可能不及submodule來得直接與便利

希望今天的分享幫助到大家更有效的管理專案,我們下次見囉!

 

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

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

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Categories:
  MagentoMagento開發

留下回應

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

請到您的信箱確認,即可完成訂閱。