Условные обозначения тегов версии монорепозитория

Существует ли стандарт использования тегов версий в монорепозиториях? Что-то вроде 1.0.0-myapp1 и 2.1.0-myapp2 приемлемо? Или есть другой способ различать версии между приложениями?


person Community    schedule 15.11.2017    source источник
comment
Тег соответствует фиксации, которая, в свою очередь, соответствует всему репо. Поэтому неясно, что значит пометить моно-репозиторий на основе имен отдельных компонентов.   -  person Oliver Charlesworth    schedule 15.11.2017
comment
Если каждому приложению нужна отдельная версия, это хороший признак того, что вам нужно репо для каждого из них. Я бы либо использовал схему с одной версией для этого репо, либо разделил бы репо для каждого приложения.   -  person Gonzalo Matheu    schedule 15.11.2017


Ответы (1)


tags организованы в каталоги и файлы (все ссылки на git есть, запустите tree .git/refs/tags, чтобы увидеть это), поэтому я бы предложил назвать теги:

myapp1/1.0.0
myapp1/1.0.1
 ...
myapp2/2.1.0
myapp2/2.2.0
 ...

Это сгруппирует версии для каждого приложения вместе, а некоторые команды будут обрабатывать числа «естественно»:

# list tags, sorted by version number :
$ git tag --list --sort="version:refname"
myapp1/1.0.2
myapp1/1.0.10
myapp1/2.0.0
myapp1/10.0.0
myapp2/1.0.0
myapp2/2.0.0
myapp2/11.0.0

Если вы хотите избежать появления «тегов для myapp2» при проверке журнала для myapp1, вы можете использовать --decorate-refs=<pattern> :

# this will include tags starting with 'myapp1', and all branches :
$ git log --oneline --graph --decorate-refs=refs/tags/myapp1 --decorate-refs=refs/heads

Если вам это нужно на регулярной основе, вы можете добавить для него псевдоним:

$ git config alias.logmyapp1 log --decorate-...
person LeGEC    schedule 12.06.2019