[英]Maintaining project with plugins in git
我們目前正在使用SVN開發一個內部應用程序,該應用程序在插件中具有大部分功能。 在我們切換git的方法中,這個應用程序引起了一些令人頭疼的問題,關於在git中處理這種項目的最佳實踐。
即我們應該將每個插件放入自己的git存儲庫中嗎? 這似乎是一個合乎邏輯的選擇,因為插件大多不依賴於彼此而是獨立(僅使用核心應用程序進行框架功能和常見功能的管理),通常由不同的人開發並偶爾棄用。 然而,現在有十多個插件,還有更多的插件,構建整個項目通常需要逐個檢出所有(或大多數)插件。 並且似乎沒有一種簡單的方法可以立即檢查所有這些,即可能需要某種“列表”,以便人們知道要獲得什么,不能獲得什么。
另一方面,將所有內容放在一個git存儲庫中似乎不符合git的精神,特別是。 因為我們會攜帶舊的死代碼並只處理一個插件需要檢查很多代碼(盡管那時大多數開發人員都會查看所有內容)。 分支也總是分支所有東西(例如,如果插件不能單獨分支,這使得分支特征的交叉測試變得困難)
一個想法是使用子模塊,但我不知道開銷(精神開銷,我的意思是)是否大於增益(或者,我們是否獲得的收益低於我們使用一對一方法所損失的收益)。
你會如何/在git中處理這種項目?
這種系統(如“可寫組件集合”)最好用以下方式管理:
如“ 子模塊的真實性質 ”中所述,您可以直接從該父項目修改任何插件。
(如果您有重復的依賴項,請參閱使用Git復制子模塊 )最近的Git版本附帶了能夠以遞歸方式檢出父項目的所有子模塊的命令。
因此,當我檢查父項目並記得為每個插件調用“
git submodule init
”時,我會在桌面上安裝所有項目。
但你不應該記得在git submodule update --init --recursive
(只有一個命令)旁邊做任何事情。 正如我所說,它將遞歸初始化所有子模塊。
然而, 子模塊被固定到版本 ,這不會導致一些更復雜的工作流程嗎?
依賴管理的原則是始終引用特定版本(而不是引用一個組件的“最新代碼”)。
但這並不妨礙你:
同樣, 子模塊的真實性質詳述了該過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.