Итак, у меня есть более крупный проект (с закрытым исходным кодом), и в контексте этого проекта я создал библиотеку, которая, я думаю, может быть полезна и в другом месте.
Теперь я хочу выделить библиотеку в отдельный проект, который может быть открыт на github или аналогичном. Разумеется, библиотека (и ее история там) не должна содержать следов нашего проекта.
git-subtree кажется здесь решением, но он не подходит полностью.
Макет моего каталога выглядит примерно так (поскольку это проект Java):
- fencing-game (git workdir)
- src
- de
- fencing_game
- transport (my library)
- protocol (part of the library)
- ограждение (часть основного проекта, связанная с библиотекой)
- клиент (часть основного проекта, взаимодействующая с библиотекой)
- сервер (часть основного проекта, взаимодействующая с библиотекой)
- клиент (часть основного проекта)
- сервер (часть основного проекта)
- ... (часть основного проекта)
- transport (my library)
- fencing_game
- de
- другие файлы и каталоги (система сборки, веб-сайт и т. д. - часть основного проекта)
- src
После разделения я хочу, чтобы структура каталогов библиотеки выглядела следующим образом (включая любые файлы прямо в каталогах, выделенных жирным шрифтом):
- my-library (name to be determined)
- src
- de
- fencing_game
- transport (my library)
- protocol (part of the library)
- transport (my library)
- fencing_game
- de
- src
История также должна содержать только ту часть истории основного проекта, которая касается этой части репозитория.
Первый взгляд показал мне 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, в отдельном подкаталоге, а не там, где он сейчас. Я так представляю макет
- fencing-game (git workdir)
- src
- de
- fencing_game
- transport (empty)
- fencing (part of the main project interfacing with the library)
- клиент (часть основного проекта, взаимодействующая с библиотекой)
- сервер (часть основного проекта, взаимодействующая с библиотекой)
- клиент (часть основного проекта)
- сервер (часть основного проекта)
- ... (часть основного проекта)
- transport (empty)
- fencing_game
- de
- my-library
- src
- de
- fencing_game
- transport (my library)
- protocol (part of the library)
- transport (my library)
- fencing_game
- de
- src
- другие файлы и каталоги (система сборки, веб-сайт и т. д. - часть основного проекта)
- src