Git大型项目的存储库结构

时间:2014-06-30 11:13:58

标签: git repository

我有一个大项目(Total Commander powerpack)。 安装产品时,它是一个包含子文件夹的文件夹,内容按类别分组:

Pack\
 `--System\
 `--Viewers\
 `--Editors\
 ...

但是产品的部署要困难得多。

有一个核心模块(main-v14.0.exe)。安装后,创建文件夹的基本结构并复制最必要的文件。

由于安装了可下载的模块,核心模块支持扩展。

有几个可下载的模块作为单独的安装程序(admin-module.exeinternet-module.exemultimedia-module.exe等)。每个模块都将新文件添加到基本文件夹结构,并可以替换一些现有文件。可下载的模块独立于核心模块发布。

更糟糕的是,已经发布了用于修复核心模块中的错误的累积补丁。这些补丁也是单独的安装程序(patch-v14.0-1.exepatch-v14.0-2.exe等)。幸运的是,可下载的模块只是重新发布而不是修补它们。

显然,所有这些模块都有共同的文件。

所以现在我将所有文件保存在同一个文件夹中,就像安装了所有模块和最新的补丁一样。当需要发布新版本的模块或补丁时,我将受影响的文件复制到一个单独的文件夹中,安装程序收集并测试与主模块的集成。我没有使用任何VCS。但是我想要。

顺便说一下,为了创建安装程序,我使用了NSIS。

最后,我想组织一个存储库(或几个)来存储项目的所有文件,独立开发并分别测试每个模块。

在另一个小项目中,我成功使用了git-flow。但是,我无法想象如何正确组织这个大型项目。请给我一个建议。

1 个答案:

答案 0 :(得分:1)

  

除非项目非常庞大,否则我会选择包含服务器和客户端子目录的单一存储库,并为每个版本创建一个分支。如果您希望同时访问多个版本,您仍然可以拥有该存储库的多个副本。   通过维护多个存储库,您可以更加难以进行传输更改(rebase比应用修补程序更容易)。在(不太可能的)情况下,没有任何更改可以应用于多个版本,你仍然没有失去任何东西......   此外,您始终可以切换到多个存储库:只需克隆存储库并删除不需要的分支。反过来更难。   只有当服务器和客户端没有共享或代码非常庞大时,我才会使用多个存储库。