我有一个相当庞大的git仓库,其中有一个目录用于维护库代码。该目录包含许多子目录。
repo
+--- lib
| +--- A
| +--- B
...
| +--- Z
现在假设我想要开源子目录 A,...,M
并保持子目录 N,...,Z
闭源。同时假设我想要:
- 将
A,...,M
放在一个开源仓库中。原因是目录A,...,M
有相互依赖,将它们分成单独的仓库会很混乱。 - 保留我闭源仓库的结构。例如,我可以创建子目录
lib/pub
和lib/pvt
,但这会产生级联效应,需要在其他地方修改引用或需要大量符号链接 (lib/A -> lib/pub/A
)。 - 有一种类似于
git subtree
的解决方案,可以让我在我的闭源仓库或开源仓库中修改代码,并且可以轻松同步两个仓库之间的更改。
我已经在 stackoverflow 和 google 中搜索了解决方案,但似乎没有明显的解决方法。从概念上讲,git subtree
应该能够做到这一点,但它只能处理单个子目录。
我已经查看了 git-subtree
脚本并打算修改它。
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
我的理解是,如果我修改 subtree_for_commit()
函数,我就可以让 git subtree split
考虑多个目录进行拆分。但是,我对 git 的了解还不足以在不破坏东西的情况下修改它。
如果您有任何解决上述问题或修改 git-subtree
的其他指南,请告诉我。