首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git子模块或子存储库还是远程?

Git子模块或子存储库还是远程?
EN

Stack Overflow用户
提问于 2011-03-25 19:55:13
回答 2查看 17.7K关注 0票数 25

我正在使用GIT管理一个内容管理系统(CMS)项目。CMS可以有多个插件(模块)。

因此,基本上,我希望有3种类型的存储库:

  • 核心CMS开发(每个新项目都是最后一个稳定和未配置版本的签出)
  • 每个模块/插件1个存储库。(每个新项目都将签出他们想要实现的模块的最后一个稳定版本)
  • 每个项目1个存储库(每个客户端将是一个存储库,表示来自核心CMS和模块的个性化设置)

对于类型1& 2,我猜它是简单的基本存储库。但是当涉及到客户项目时,我会感到困惑:

  • 首先,我将克隆CMS,然后进入/ modules /文件夹,然后再次克隆所有所需的模块?它将在存储库中形成一个存储库!第一个回购会尝试记录每个模块的. .git/文件夹吗?
  • 我不能使用子模块,因为每个客户都需要他们的模块是个性化的。
  • 如果我修改一个模块的核心组件(不是个性化的,只是一个bug修复),我能把这个文件推送到原始的模块存储库吗?
  • (没有提到将到处传播的模块unitTest )

因此,问题是:为了提高效率,我应该如何组织存储库/文件/文件夹?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-25 20:08:15

您所描述的布局将非常适合于git子模块。我会温和地建议阅读文档并尝试一些教程。您的计划带来的关键区别是,每个客户端存储库和客户端插件存储库将有两个远程程序,而不是一个。而且,当您想要启动一个新的客户端项目时,您需要

  1. 分叉主线cms
  2. 将所有将被修改的插件分叉
  3. 从(1)克隆分叉的cms,更新其子模块以指向(2)中的新遥控器。
  4. 初始化/更新子模块
  5. (可选)在客户端的分叉cms中将主线cms URL作为远程添加
  6. (可选)将主线插件URL作为远程插件添加到客户端的分叉插件中

一个更好的选择可能是使用相同的存储库,只需为每个客户端创建一个分支。我就是这样做的。

票数 15
EN

Stack Overflow用户

发布于 2016-01-25 18:50:17

关于前一个答案的简短更新/附加信息:如果您不喜欢git submodules方法,或者认为这太难理解,可以尝试

不要忘记检查是否可以使用另一个依赖管理器(比如RubyGems用于Ruby,Composer用于PHP.)而不是子模块,它将更容易使用和维护。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5437460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档