3

目前我们确实有一个大型项目,由模块A、B、C、D、E组成。这些模块位于github上的同一个项目存储库中,但位于不同的文件夹中 - 每个模块都在它自己的文件夹中。项目由 Maven 管理,如果这很重要的话。

最近我们决定将项目拆分为两个不同的实例 - P1P2,因此它们将驻留在不同的存储库中。P1应该持有模块A,C,D并且项目P2应该持有B,E

所以现在我们认为我们至少有 4 个选项:

  • 让项目保持原样。将相应的 Git 模块添加到P1P2,因此每个模块都将指向项目中的适当文件夹这将肯定保留历史记录(至少我认为如此)。
  • 为P1创建存储库,将内容签入其中。然后将模块B、E移动到文件夹client,然后创建将文件夹client作为模块导入P2 repo。我不知道这是否可能,但它也应该保留历史。
  • 将所有内容签入P1P2 ,然后从P1中删除模块B,E,并从P2中删除模块A,C,D。然后将P2作为 git 模块添加到P1。这应该保留历史,但实际上太多了 - 所以模块P2将包含从P1到发散时刻的所有内容。如果可能,我们希望避免这种情况。
  • 最后,只需从头开始检查它作为新项目的所有内容。

我个人更喜欢第一个选项,但不确定这是否可能 - 例如,添加外国项目的子文件夹的依赖项。

4

1 回答 1

2

如果您想为每个子模块创建一个新的 repo,那么您应该查看git-subtree。使用split选项创建仅包含子文件夹历史记录的新分支。然后你可以将push那些新的遥控器作为master分支。

如果您需要有关使用的详细信息,请联系我。

于 2013-03-19T05:57:30.193 回答