У меня есть довольно большой репозиторий git, в котором есть каталог, в котором я поддерживаю библиотечный код. Каталог содержит несколько подкаталогов.
repo
+--- lib
| +--- A
| +--- B
...
| +--- Z
Теперь предположим, что я хочу открыть исходные подкаталоги A,...,M
и сохранить подкаталоги N,...,Z
close sourced. Предположим также, что я хотел бы:
- Храните
A,...,M
в одном хранилище с открытым исходным кодом. Причина этого в том, что каталогиA,...,M
имеют взаимозависимости, и было бы путать их разделить на отдельные репозитории. - Сохранять структуру моего закрытого хранилища источника. Например, я мог бы создавать подкаталоги
lib/pub
иlib/pvt
, но это имело бы каскадные эффекты, требующие изменения ссылок в другом месте или потребовало бы много символических ссылок (lib/A -> lib/pub/A
). - У меня есть решение, похожее на
git subtree
, где я могу модифицировать код либо в моем закрытом исходном репозитории, либо в открытом исходном коде, и я могу легко синхронизировать изменения между двумя репозиториями.
Я искал решение как в stackoverflow, так и в google, но, похоже, не существует очевидного. Концептуально это то, что git subtree
должно быть в состоянии сделать, но оно работает только с одним подкаталогом.
Я просмотрел git-subtree
script с целью его изменения.
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
Мне кажется, что если я должен был изменить subtree_for_commit()
, я должен был бы убедить git subtree split
рассматривать больше, чем один каталог для разделения. Но моих знаний о git недостаточно, чтобы понять, что делает script, и изменять его, не нарушая ничего.
Если у вас есть решение для вышеупомянутой проблемы или любых других указателей при модификации git-subtree
, пожалуйста, дайте мне знать.