所以,我有一个更大的(封闭源代码)项目,并且在这个项目的上下文中创建了一个库,我认为它在其他地方也可能有用。
我现在想在自己的项目中拆分该库,该项目可以作为 github 或类似的开源项目。当然,图书馆(以及它的历史)不应该包含我们项目的任何痕迹。
git-subtree 在这里似乎是一个解决方案,但它并不完全适合。
我的目录布局是这样的(因为它是一个 Java 项目):
- 击剑游戏 (git workdir)
- 源代码
- 德
- 击剑游戏
- 交通 (我的图书馆)
- 协议 (库的一部分)
- 围栏(与图书馆接口的主要项目的一部分)
- 客户端(与库接口的主要项目的一部分)
- 服务器(与库接口的主项目的一部分)
- 客户(主要项目的一部分)
- 服务器(主项目的一部分)
- ... (主要项目的一部分)
- 交通 (我的图书馆)
- 击剑游戏
- 德
- 其他文件和目录(构建系统、网站等 - 主项目的一部分)
- 源代码
拆分后,我希望库的目录布局如下所示(包括直接在粗体目录中的任何文件):
- 我的图书馆(名称待定)
- 源代码
- 德
- 击剑游戏
- 交通 (我的图书馆)
- 协议 (库的一部分)
- 交通 (我的图书馆)
- 击剑游戏
- 德
- 源代码
历史记录还应该只包含与存储库的这一部分相关的主项目历史记录的一部分。
第一眼看到我git-subtree split --prefix=src/de/fencing_ame/transport
,但这会
- 给我一棵植根于的树
transport
(不会编译)和 - 包括
transport/client
,transport/server
和transport/fencing
目录。
第一点可以通过git subtree add --prefix=src/de/fencing_ame/transport <commit>
在接收端使用来缓解,但我认为 git-subtree 对导出这些子目录也没有多大作用。(这个想法实际上是能够在这里分享完整的树)。
我必须在这里使用git filter-branch
吗?
拆分后,我希望能够使用 git-subtree 或 git-submodule 将主项目中的库导入到单独的子目录中,而不是现在的位置。我想象这样的布局
- 击剑游戏 (git workdir)
- 源代码
- 德
- 击剑游戏
- 运输 (空)
- 围栏(与图书馆接口的主要项目的一部分)
- 客户端(与库接口的主要项目的一部分)
- 服务器(与库接口的主项目的一部分)
- 客户(主要项目的一部分)
- 服务器(主项目的一部分)
- ... (主要项目的一部分)
- 运输 (空)
- 击剑游戏
- 德
- 我的图书馆
- 源代码
- 德
- 击剑游戏
- 交通 (我的图书馆)
- 协议 (库的一部分)
- 交通 (我的图书馆)
- 击剑游戏
- 德
- 源代码
- 其他文件和目录(构建系统、网站等 - 主项目的一部分)
- 源代码