簡體   English   中英

使用git中的插件維護項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM