因此,我有一个更大的(封闭源代码)项目,在这个项目的上下文中创建了一个库,这个库在其他地方也可能有用,我认为。
现在,我想在自己的项目中拆分库,它可以作为github或类似的开源。当然,库(以及它在那里的历史)不应该包含我们项目的任何痕迹。
在这里,git子树似乎是一个解决方案,但它并不完全适合。
我的目录布局如下(因为它是一个Java项目):
- client _(part of the main project)_
- server _(part of the main project)_
- ... _(part of the main project)_
- _other files and directories (build system, website and such - part of the main project)_
拆分后,我希望库的目录布局如下(包括直接位于粗体目录中的任何文件):
历史还应该只包含主项目历史的一部分,这部分涉及到存储库的这一部分.
我第一眼看了看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子树也不能很好地防止导出这些子目录。(真正的想法是能够在这里共享完整的树)。
这里必须使用git filter-branch吗?
拆分后,我希望能够在我的主项目中导入库,无论是使用git子树还是git子模块,都可以在一个单独的子目录中,而不是在现在的位置。我想布局是这样的
- client _(part of the main project)_
- server _(part of the main project)_
- ... _(part of the main project)_
- my-library
- src
- de
- fencing\_game
- **transport** _(my library)_
- **protocol** _(part of the library)_
- _other files and directories (build system, website and such - part of the main project)_
,什么是最无痛的方法?,除了git子树和git过滤器分支之外,还有其他工具来实现这个目标吗?
发布于 2011-09-20 19:25:52
我觉得你还得去探险呢。如果您只想拆分“协议”,可以使用"git子树拆分.“。或者"git过滤器-分支“
git filter-branch --subdirectory-filter fencing-game/src/de/fencing_game/transport/protocol -- --all
但是,如果您在传输和传输/协议中都有文件,它就会开始变得毛茸茸的。
我写了一些定制的工具来完成我正在做的一个项目。它们没有在任何地方发布,但是您可以使用宝库做类似的事情。
发布于 2014-03-07 19:35:50
从父项目中分割混合了文件的子树。
这似乎是一个常见的请求,但是当文件夹像这样混合在一起时,我不认为有一个简单的答案。
我建议将库与其他文件夹混合使用的一般方法如下:
我建议您的最终库路径更像/transport/protocol,而不是完整的父项目路径,因为这似乎与项目有某种联系。
发布于 2011-06-19 17:25:40
这里的问题是,没有好的分离,什么是和不是你的库的一部分。我强烈建议解决方案是重构的,然后您只需将库作为子模块。
如果这个库的重用将由其他开发人员在同一个repo中进行,那么只需在一个单独的分支上跟踪这些更改,而不需要额外的repos。
https://stackoverflow.com/questions/6403715
复制相似问题