2016-03-05 2 views
3

У меня есть пакет, который я только что обновил, чтобы использовать setuptools_scm и нашел, что номер версии неверен в readthedocs.readthedocs и setuptools scm version wrong

http://sshuttle.readthedocs.org/en/v0.77/ показывает:

Version: 0.78.dev0+ng083293e.d20160304 

однако, как версия 083293e имеет 0,77 тег, версия строка должна быть только 0,77

Похоже readthedocs может вносить изменения в мой исходный код, прежде чем строить.

Я просмотрел журналы сборки readthedocs и, кажется, имеет правильную версию на одном этапе (0.77), однако это до того, как она построит документацию.

Processing dependencies for sshuttle==0.77 
Finished processing dependencies for sshuttle==0.77 

В сборках не упоминается версия при сборке документации.

Можно ли это решить?

Благодаря

+0

Для потомков эта проблема также была [поднята с помощью setuptools_scm] (https://github.com/pypa/setuptools_scm/issues/84). –

+0

Только что поднял проблему с помощью [readthedocs] (https://github.com/rtfd/readthedocs.org/issues/2144). –

ответ

0

Документация setuptools_scm теперь instructions о том, как использовать с readthedocs :

Это не рекомендуется использовать setuptools_scm от самого сфинкса, а использовать pkg_resources после редактируемой/реальной установки:

from pkg_resources import get_distribution 
release = get_distribution('myproject').version 
# for example take major/minor 
version = '.'.join(release.split('.')[:2]) 

Основная причина в том, что услуги, такие как readthedocs иногда изменяет WorkingDirectory для хороших причин, и с помощью установленных метаданных предотвращает использование ненужных летучих данных там.

Это позволяет избежать необходимости использования kluges в соответствии с другим ответом.

1

Я вижу, что вы строите this project.

Очевидно, что что-то мутирует состояние репозитория до того, как будет определена версия. Вы можете повторить подобное поведение мутирует один из файлов перед сборкой Документов себя:

(sshuttle) $ python setup.py --version 
0.77 
(sshuttle) $ cat >> setup.py 
# a comment 
(sshuttle) $ python setup.py --version 
0.78.dev0+ng083293e.d20160403 

В считанных Документах документов, есть description of the process.

Здесь вы можете увидеть шаги, которые выполняет RTD, а именно: (a) запустить setup.py install, затем (b) установить требования в файле требований.txt.

Я подтвердил, что ни один из этих шагов не должен мутировать состояние репо.

Это не объясняет, откуда эта версия, или что делает update_imported_docs. Я подозреваю, что проблема кроется в чем-то тонком, который читает документы, делая это, изменяя репо.

Здесь one place where the conf.py file gets modified.

Возможно, добавление docs/conf.py в ваш .gitignore позволит игнорировать эти изменения и, таким образом, не загрязнять ваше рабочее состояние при расчете версии проекта.

+0

Я попытался добавить '' docs/conf.py'' в .gitignore, а затем сменить docs/conf.py; однако scm все еще обнаруживает изменение. Я ожидал этого. Не уверен, что я понимаю, почему RTD нужно что-то менять. Или, если это действительно так, вероятно, нужно сделать копию вместо изменения оригинала. Не задержит дыхание ... –

+0

Идти принять этот ответ, поскольку он, вероятно, объясняет, почему я вижу это поведение, хотя оно и не дает решения. –

+0

Следующее, я попробую добавить вызов 'subprocess'' git diff' или аналогичный в conf.py, а затем проверить журналы во время сборки rtd, чтобы узнать, что конкретно меняется в репо. –

0

https://github.com/pypa/setuptools_scm/issues/84 был обновлен, чтобы записать этот

мы будем работать с командой сфинкса, чтобы обеспечить автоматизированный/безболезненный вариант этого процесса

Смежные вопросы