В последнее время я работаю над библиотекой API, которая обертывает части относительно большого внешнего API в более идиоматическую структуру. Поскольку я изучал API при написании кода прототипа, я закончил реализацию трех доступных суб-API с разной степенью функциональности. Или, проще говоря, у меня есть проект, который выглядит как
dir:root
└ dir:feature-a
└ dir:feature-b
└ dir:feature-c
└ dir:common
└ file:build.gradle
└ file:build.py
где каждая функция соответствует одному из суб-API. Стоит упомянуть, что каталоги не плоские, я просто пропустил подкаталоги для простоты.
Моя основная проблема заключается в том, что, хотя на самом деле я на этот раз предоставил полупристойную историю версий, все это в одной ветке, и только один из суб-API готов к выпуску. В идеале я хотел бы найти наиболее удобный способ
- Разделите существующее репо, чтобы я мог превратить каждую функцию в свою ветвь, чтобы я мог публиковать их по одному, пока они достаточно зреют.
- Сохраняйте текущую историю версий (с некоторыми изменениями, возможно)
Ранее я использовал git filter-branch
, но один главный кривый шар здесь состоит в том, что корень репозитория - фактически другой репозиторий - на мета уровне репозитория имеет двух родителей, которые, по общему признанию, являются напуганными и очень полезными для обновления сценариев сборки, но если я попытаюсь сделать то, что хочу с помощью filter-branch
, скрипты сборки в корне проекта будут удалены, что определенно не является чем Я хочу.
Наконец, каталог common
является немного особенным - я не против резать его историю версий, если есть его содержимое.