Автоматически обновлять версию setup.py при каждой фиксации SVN - PullRequest
3 голосов
/ 13 декабря 2011

Мы разворачиваем дополнения Plone в качестве развивающих яиц со сборкой.Яйца отправляются в производство в качестве извлечения исходного кода с использованием рецепта сборки Mr. Developer и упаковки .egg ни в коем случае не выполняется.

Что было бы лучшим способом автоматического обновления штампа версии setup.py на каждом SVNзафиксировать номер релиза SVN или метку времени?Это дало бы небольшую информацию о отслеживании различных пакетов.

Distutils, кажется, предлагает какой-то волшебный механизм штамповки версий, но я не нашел справочной документации, как это следует использовать.

Ответы [ 3 ]

6 голосов
/ 13 декабря 2011

Добавьте что-то подобное в setup.cfg:

[egg_info]
tag_build = .dev
tag_svn_revision = 1

Конечно, это работает только для subversion;не уверен, есть ли альтернативы для других VCS.Этот файл все еще может быть добавлен по умолчанию некоторыми шаблонами ZopeSkel.В некоторых пакетах plone это тоже есть;Wichert Akkerman является / был его поклонником.

Обратите внимание, что вам нужно каждый раз запускать bin/buildout или python setup.py egg_info для фиксации чего-либо, иначе информация о версии в каталоге egg-info не обновляется.

1 голос
/ 13 декабря 2011

Вы можете просто использовать Ключевые слова SVN , например,

__version__ = "$Rev:$"

SVN автоматически меняет с этим ключевым словом версию при каждом обмене файлами и, соответственно, фиксации.

0 голосов
/ 13 декабря 2011

Какой лучший способ автоматически обновить штамп версии setup.py на каждом SVN коммит к номеру выпуска SVN или метке времени?

Если

  • процесс сборки может выполнить некоторые действия (мне лень читать рецепт сборки)
  • использование дополнительных инструментов только для Windows не является для вас "нет-нет"

вы можете использовать SubWCRev cli-tool из пакета TortoiseSVN. Это (немного) изменить текущий рабочий процесс:

  • вместо real хранилище репозитория setup.py шаблон файла setup.py, где динамическая часть данных заменена ключевыми словами SubWCRev (они могут обрабатывать ревизию , дата в свободной форме)
  • Каждый процесс сборки должен регенерировать фактический файл setup.py, вызывая subwcrev для (локальной) рабочей копии с предопределенным шаблоном setup
...