4

在我们的开发环境中,我们有一个自定义框架。虽然我们所有的项目都是从基础开始的,但它是通过使用插件和主题在一个项目基础上扩展的。

文件夹结构为:

  • 核心(包含所有项目之间的共享代码)
  • 插件(每个子文件夹都是一个插件,有些存在于所有项目中,有些是特定于项目的)
  • 主题(仅包含项目特定的代码)

目前我们克隆我们的主仓库删除 .git 文件夹,创建一个新的仓库并进行我们的更改。如果在项目或主仓库中修复了功能或错误,我们目前手动将更改与各种差异工具(主要是 winmerge)合并,以确保项目特定主题或插件不会进入主仓库并且所有项目都有最新的核心和共享插件。

我知道必须有更好的方法,也许使用子模块?核心作为子模块,每个插件作为子模块,每个主题作为子模块?那么每个项目都是自己的回购?

或者结构不是最适合这种设置?

4

2 回答 2

2

为您的核心项目和继承的项目使用不同的存储库。您继承的所有项目都应该包含您的骨架项目作为依赖项,maven 允许您处理它。

每次更新结构时,您只需要更新每个项目的依赖关系,不再需要复杂的合并

于 2013-10-14T09:02:49.833 回答
0

在名为 PROJECT 的 git 存储库中为插件使用名为 PLUGIN 的子模块允许此存储库指向插件的特定版本。因此,如果插件在自己的 repos 中进化,PROJET 的开发者将不得不进入 PROJECT repo 中的插件目录并发布一个

git pull

为拿到它,为实现它。在开发时仅使用稳定版本的插件可能很有用。

此外,插件的源历史记录仅在其自己的仓库中进行管理。这是一个更容易理解的开发方案。

当您拥有包含使用二进制/数据集的 repo 并且具有繁重的历史管理时,使用子模块也很有用。所以它不会减慢你的其他回购。

于 2013-10-14T09:13:18.520 回答