Представьте, что у меня есть репозиторий github.com/user/golang-examples
, и я предоставляю версии для каждого примерного модуля в нем отдельно:
guthub.com/user/golang-examples
/modA
/go.mod
/pkgA1
/pkgA2
/modB
/go.mod
/pkgB1
/pkgB2
(Я знаю, что это идиома «одно репо - один модуль», но есть варианты использования и для многомодульных проектов, поэтому это не является предметом обсуждения)
В то же время семантическая маркировка git (v1.0.0
, v2.0.0
и т. Д.) Происходит на уровне репо, а не его подпапок. Это делает невозможным тегирование модулей по отдельности, например
- Во-первых,
modA
опережаетmodB
в разработке основной версией, а тегv2.0.0
проталкивается на уровне репо с целью версииmodA
- Позже, когда кто-то захочет обновить
modB
до v2, нельзя будет повторно вставить тот же тегv2.0.0
git в версиюmodB
.
Как можно решить эту задачу в соответствии с парадигмой управления версиями golang? Опять же, речь идет о многомодульном проекте. Очевидное решение для разделения модулей на репозитории здесь отчасти неблагоприятно, потому что желательна всеобъемлющая семантика «примеров» верхнего репо.
Спасибо!