Автоматический номер версии как в setup.py (setuptools), так и в исходном коде?

СИТУАЦИЯ:

У меня есть библиотека python, управляемая git и связанная с distutils / setuptools. И я хочу автоматически генерировать номер версии на основе тегов git, как для setup.py sdist и подобных команд, так и для самой библиотеки.

Для первой задачи я могу использовать git describe или подобные решения (см. Как я могу получить версию, определенную в setup.py (setuptools) в моем пакете? ).

И когда, например, я нахожусь в теге '0.1 'и вызываю' setup.py sdist ', я получаю' mylib-0.1.tar.gz '; или mylib-0.1-3-abcd.tar.gz, если я изменил код после добавления тегов. Это нормально.

ПРОБЛЕМА:

Проблема возникает, когда я хочу, чтобы этот номер версии был доступен для самой библиотеки, чтобы она могла отправлять его в HTTP-заголовке User-Agent как 'mylib / 0.1-3- adcd '.

Если я добавлю команду setup.py version , как в Как я могу получить версию, определенную в setup.py (setuptools) в моем пакете? , то эта версия .py генерируется ПОСЛЕ создания тега, поскольку он использует тег как значение. Но в этом случае мне нужно сделать еще одну фиксацию после создания тега версии, чтобы код был согласован. Что, в свою очередь, требует нового тега для дальнейшего объединения.

ВОПРОС:

Как разорвать этот круг зависимостей (generate-commit-tag-generate-commit-tag -...)?

37
задан Community 23 May 2017 в 11:46
поделиться