簡體   English   中英

Git子模塊或子存儲庫還是遠程?

[英]Git submodule or sub-repository or remote?

我正在使用GIT來管理內容管理系統(CMS)項目。 CMS可以有多個插件(模塊)。

基本上,我想擁有3種類型的存儲庫:

  • 核心CMS開發(每個新項目都是最后一個穩定和未配置版本的結帳)
  • 每個模塊/插件1個存儲庫。 (每個新項目都會檢查他們想要實現的模塊的最后一個穩定版本)
  • 每個項目1個存儲庫(每個客戶端將是一個存儲庫,代表來自核心CMS和模塊的個性化)

對於類型1和類型2,我猜它是簡單的基本存儲庫。 但當涉及到客戶項目時,我感到困惑:

  • 首先,我將克隆CMS,然后進入/ modules /文件夾並再次克隆所有必需的模塊? 這將在存儲庫中創建一個存儲庫! 第一個repo會嘗試記錄每個模塊的.git /文件夾嗎?
  • 我無法使用子模塊,因為每個客戶端都需要對其模塊進行個性化。
  • 如果我修改模塊的核心組件(不是個性化,只是修復錯誤),我可以將該單個文件推送到原始模塊存儲庫嗎?
  • (不是說會傳播到周圍的模塊unitTest)

所以問題是:我應該如何組織存儲庫/文件/文件夾以提高效率?

你所描述的布局對git子模塊非常有效。 我會溫和地推薦閱讀文檔並嘗試一些教程 您的計划引入的主要區別是每個客戶端存儲庫和客戶端插件存儲庫將具有兩個遠程控制器而不是一個。 而且,當您想要啟動一個新的客戶項目時,您將需要

  1. 叉主線cms
  2. fork所有將被修改的插件
  3. 從(1)克隆分叉的cms,更新其子模塊以指向(2)的新遙控器
  4. 初始化/更新子模塊
  5. (可選)將主線cms URL作為遠程添加到客戶端的分叉cms中
  6. (可選)在主客戶端的分叉插件中添加主線插件URL作為遙控器

更好的選擇可能是使用相同的存儲庫,只需為每個客戶端創建一個分支。 這就是我要做的。

關於上一個答案的簡短更新/附加信息:如果您不喜歡git submodules方法或認為這太難理解,您可以嘗試

不要忘記檢查是否可以使用另一個依賴管理器(如Ruby的RubyGems,PHP的Composer ...)而不是子模塊,它將更容易使用和維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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