для моего пакета, у меня есть следующее setup.py
import setuptools
setuptools.setup(
setup_requires=['pbr>=2.0.0'],
pbr=True
)
когда я запускаю python setup.py sdist
, версия, помеченная для файла tar, будет module-0.0.1.dev1207
. Если я изменю setup.cfg
на следующую запись
[metadata]
version = 1.0.1
версия, помеченная для файла tar, -1.0.1.dev1207
.
Я прочитал pbr
и увидел, что он использует коммиты git и теги для создания версий.
В их документации говорится, что
С версиями можно управлять двумя способами - постверсионным и преверсионным. Постверсионная версия используется по умолчанию, и предварительная версия включена путем установки версии в разделе метаданных setup.cfg. В обоих случаях строки версии выводятся из git.
Если отмеченная в настоящий момент ревизия помечена, этот тег используется в качестве версии.
Если текущая извлеченная ревизия не помечена, то мы берем последний помеченный номер версии и увеличиваем его до минимальной целевой версии.
Затем мы возвращаемся к истории git до последнего выпуска. В каждом коммите мы ищем псевдо заголовок Sem-Ver: и, если найден, анализируем его, ища ключевые слова. Неизвестные символы не являются ошибкой (так что люди не могут заклинить pbr или сломать свое дерево), но мы выдадим предупреждающее сообщение информационного уровня. Известные символы: функция, api-break, deprecation, bugfix. Отсутствующая строка Sem-Ver эквивалентна Sem-Ver: исправление. Символ исправления приводит к увеличению уровня патча до версии. Символы функции и устаревания вызывают незначительное увеличение версии. Символ api-break вызывает увеличение основной версии.
Если используется постверсионная версия, мы используем полученный номер версии в качестве целевой версии.
Если используется предварительная версия, мы проверяем, что версия, установленная в разделе метаданных файла setup.cfg, больше, чем версия, которую мы выводим, используя вышеуказанный метод. Если предполагаемая версия превышает значение предварительной версии, мы выдаем ошибку, в противном случае мы используем версию из setup.cfg в качестве цели.
Затем мы генерируем строки версий dev на основе коммитов с момента последнего выпуска и включаем текущий git sha для устранения неоднозначности нескольких версий dev с одинаковым количеством коммитов с момента выпуска.
Но это заставляет меня сомневаться в следующих вопросах:
- Как включить предварительную версию?
- Что, если в репо никогда не было тега или репо, поскольку pbr, кажется, говорит, что по крайней мере один из них необходим для корректной работы pbr?
- Как мне удалить
dev1207
часть моей версии?
- Как мне настроить
setup.cfg
для чтения версии из моего main.py
вместо того, чтобы указывать ее в файле setup.cfg
?