目前我们确实有一个大型项目,由模块A、B、C、D、E组成。这些模块位于github上的同一个项目存储库中,但位于不同的文件夹中 - 每个模块都在它自己的文件夹中。项目由 Maven 管理,如果这很重要的话。
最近我们决定将项目拆分为两个不同的实例 - P1和P2,因此它们将驻留在不同的存储库中。P1应该持有模块A,C,D并且项目P2应该持有B,E。
所以现在我们认为我们至少有 4 个选项:
- 让项目保持原样。将相应的 Git 模块添加到P1和P2,因此每个模块都将指向父项目中的适当文件夹这将肯定保留历史记录(至少我认为如此)。
- 为P1创建存储库,将内容签入其中。然后将模块B、E移动到文件夹client,然后创建将文件夹client作为模块导入P2 repo。我不知道这是否可能,但它也应该保留历史。
- 将所有内容签入P1和P2 ,然后从P1中删除模块B,E,并从P2中删除模块A,C,D。然后将P2作为 git 模块添加到P1。这应该保留历史,但实际上太多了 - 所以模块P2将包含从P1到发散时刻的所有内容。如果可能,我们希望避免这种情况。
- 最后,只需从头开始检查它作为新项目的所有内容。
我个人更喜欢第一个选项,但不确定这是否可能 - 例如,添加外国项目的子文件夹的依赖项。