Я прочитал " Отсоединить подкаталог в отдельный репозиторий Git ", но я не совсем уверен, как использовать это для достижения того, что я ищу. В настоящее время у нас есть один большой проект, который содержит нашу схему / сущности, наши интерфейсные веб-процессы и 2 версии нашего REST API. Я хотел бы разделить все это на отдельные репозитории, если это возможно. Вот какая структура каталогов у нас есть на данный момент:
lib/Project/Entity/*.pm
lib/Projcet/Data/*.pm
lib/Project/Server/Controller/*.pm
lib/Project/Server/Controller/WS/1/*.pm
lib/Project/Server/Controller/WS/2/*.pm
lib/Project/Server/Form/*.pm
И так далее. Я хотел бы иметь возможность взять каталоги Entity
и Data
и переместить их в новый репозиторий, а также предпочтительно переместить их:
lib/Project/Schema/Entity/*.pm
lib/Project/Schema/Data/*.pm
С остальными файлами я хотел бы разделить их на 2 дополнительных репозитория, один для нашего сервера переднего плана и один для REST API. Я полагаю, что хотя REST API имеет 2 разные версии, мы можем разделить его на 2 отдельные ветви (ветви v1 и v2).
Я чувствую, что filter-branch это почти то, что я хочу (возможно, с дополнительными коммитами сверху для перемещения файлов), но я не совсем понимаю, как это сделать. У кого-нибудь есть совет?
Я должен добавить, что, возможно, git rm --ignore-unmatch
может быть тем, что я хочу, но файловая структура в HEAD на данный момент, скорее всего, не та, которая была в старых коммитах (этот репозиторий охватывает почти десятилетие истории). Что я действительно хочу, так это "принять коммиты, которые касаются этих файлов: foo
, но игнорируют все другие коммиты. Вроде как СОЮЗ из git log:)