2013-03-18 74 views
3

目前我们确实有一个大型项目,模块的组成部分为A,B,C,D,E。这些模块位于github的同一个项目存储库中,但位于不同的文件夹中 - 每个模块都位于其自己的文件夹中。项目由Maven管理,如果这很重要。Git ::将多模块项目拆分为2个模块并保留历史记录

最近,我们决定在两个不同的实例拆分项目 - P1P2,所以他们将驻留在不同的存储库。 P1应该保持模块A,C,D和项目P2应该保持B,E

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

  • 保留项目,因为它是现在。将相应的Git模块添加到P1P2,所以每个模块都会指向的父文件夹这个项目会保留历史记录(至少我这么认为)。
  • 创建存储库P1,签入的东西。然后移动模块B,E到文件夹客户,然后创建导入的文件夹客户作为模块插入P2回购。我不知道这是否可能,但它也应该保留历史。
  • 签入到一切P1P2,然后从P1删除模块B,E和模块A,C,dP2。然后将P2作为git模块添加到P1。这应该保留历史,但实际上太多了 - 所以模块P2将包含从P1到发散时刻的所有内容。如果可能,我们希望避免这种情况。
  • 最后,只需从头开始,将所有内容都作为新项目进行检查。

就我个人而言,我更喜欢第一个选项,但不知道是否可以根本不可能 - 例如添加对外部项目子文件夹的依赖。

回答

2

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

如果您需要具体使用情况,请打我。

相关问题