在git monorepos中独立地bump子项目版本。

polyvers的Python项目详细描述


一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得一个值得==

…_打开-启动:
…https://img.shields.io/pypi/v/polyvers.svg
:alt:在pypi中部署?
:目标:https://pypi.org/pypi/polyvers

…https://img.shields.io/travis/jrcstu/polyvers.svg
:alt:travisci(linux)build好吗?
:目标:https://travis ci.org/jrcstu/polyvers

…https://ci.appveyor.com/api/projects/status/lyyjtmit5ti7tg1n?svg=true
:alt:apveyor(windows)构建?
:比例:100%
:目标:https://ci.appveyor.com/project/ankostis/polyvers

…https://img.shields.io/covertalls/github/jrcstu/polyvers.svg
:alt:测试用例覆盖率报告
:比例:100%
:目标:https://covertalls.io/github/jrcstu/polyvers?分支=主服务=github

…https://readthedocs.org/projects/polyvers/badge/?version=latest
:目标:https://polyvers.readthedocs.io/en/latest/?徽章=最新
:alt:自动生成文档状态

…https://pyup.io/repos/github/jrcstu/polyvers/shield.svg
:目标:https://pyup.io/repos/github/jrcstu/polyvers/
:alt:需要更新的依赖项?

…https://api.codacy.com/project/badge/grade/11b2545fd0264f1cab4c862998833503
:目标:https://www.codacy.com/app/ankostis/polyvers-jrc
:alt:代码质量度量

:版本:0.1.1a1
:更新日期:2018-08-07t13:30:07.601687
:文档:https://polyvers.readthedocs.io
:存储库:https://github.com/jrcstu/polyvers
:pypi repo:https://pypi.org/project/polyvers/,https://pypi.org/project/polyversion/
:关键字:版本管理,配置管理,版本控制,git,monorepos,
工具,库
:版权所有:2018 JRC.C4(STU),欧盟委员会(`JRC<;https://ec.europa.eu/jrc/>;``uu)
:许可证:`eupl 1.2<;https://joinup.ec.europa.eu/software/page/eupl>;`

一个python 3.6+命令行工具,用于管理"pep-440版本ID"
<;https://www.python.org/dev/pep s/pep-0440/>;``依赖子项目
独立地托管在*git***monorepo**\s中。


-x2**repo scheme**\s(**monorepo**,**mono project**),
-可配置**版本scheme**,
-*leaf**release scheme**,
-直观**版本bump代数**(todo),
-可配置**雕刻**。

叶版本方案*功能偏离了ref的逻辑:*类似的工具*
具体来说,当碰撞子项目的版本时,此工具在主干中添加**+2个标记和+1个提交**:

-one**版本标记**,如"foo-proj-v0.1.0",
-和另一个**发布标签**在一个新的**出中继提交**(叶)
类似于``foo-proj-r0.1.0``(新版本的id是**在这个发布提交中只雕刻**\d
):

_静态/叶提交.png
:align:center
:alt:leaf提交两个子项目的版本/发布标记

leaf提交两个子项目的版本/发布标记,如此repo的git历史记录所示。注意:
此功能的原因是允许跨分支(对于
不同的子项目)交换代码,而不需要**雕刻**妨碍您进行
合并冲突。

其他功能和实用程序:

-仍然可以使用普通的**版本标记(vtags)**与"v0.1.0"类似,
假设您有一个单独的项目(以下称为**mono项目**)

-一个单独的python 2.7+**polyversion**项目,它包含从过去的标记中提取子项目版本的api(作为单独的子项目提供不要葛t``polyvers``命令传递依赖关系)。
库作为**setuptools插件运行**。

…_开口端:

…目录::目录
:反向链接:顶部
:深度:4




…_用法:

tutorial
=
=
安装工具
----
,您将得到"polyvers"命令:

。代码块::console


$polyvers--version
0.0.0
$polyvers--help



$polyvers status
polyvers:setup.py和`.polyvers(.json.py.salt)`配置文件均未找到!

…注::
实际上安装了两个项目:

-**polyvers**命令行工具,用于开发python**monorepo**\s,
-**polyversion**:使用*polyvers*工具开发的项目使用的基本python库,以便他们的源代码能够在运行时从git中发现其子项目版本




prepare project
----
假设我们的**monorepo**项目``/monorepo.git/``包含两个子项目,
然后您需要在生成文件中输入以下配置:

/monorepo.git/
+--setup.py;请参见下面的内容
+--mainprog/|_版本"polyversion()
更新polytime()


+--核心库/
+--setup.py:如上所述高于
+--…

…提示:
通过查看此repo的两个"polyvers"和"polyversion"子项目,可以看到不同的安装文件示例方法(因为它们吃自己的狗粮)。

并且
添加了一个新的``setup()``keyword``polyversion=(bool dict)``
(其内容请参见func(`polyversion.init_plugin_kw`),您可以像这样使用它:

。代码块::python



…#请参阅"polyversion.init_plugin_kw()"以获取更多密钥。
},
安装程序要求=[…,"polyversion"],




提示:
setup-requires=['polyvers']``关键字(仅适用于*setuptools*、
而不是*distutils*),启用新的``polyversion=`` setup关键字。

子项目可以在安装或启动"setup.py"脚本之前使用pep(`0518`)预安装"polyversion`
库*。
为此,请在"setup"脚本旁边添加下面的"pyproject.toml"文件:

[构建系统]
需要=["setuptools","wheel","polyversion"]

,然后您可以简单地从"setup.py"导入"polyversion":

。代码块::python


注意:
要正确安装pep(`0518`)项目,您需要``pip-v10+``版本。



初始化` polyvers`
---------
……我们让工具自动发现*项目文件夹`"项目名称"的映射*
,并创建` traitles配置yaml文件<;https://traitlets.readthedocs.io>;`
命名为`/monorepo.git/.polyvers.py``:

…代码块::控制台nit--monorepo
创建了新的配置文件".polyvers.yaml"。


$cat.polyvers.yaml

polyverscmd:
项目:
-pname:mainprog从"setup.py"提取的名称。
基本路径:。#由"setup.py"
-pname:core
basepath:core lib


$git add.polyvers.yaml
$git commit-m"add polyvers config gile"

的位置发现的路径,现在我们可以使用"polyvers"命令检查所有子项目:


…代码块::console


$polyvers status
-mainprog
-core


事实上,git历史记录中没有用于派生和显示
项目版本的标记,因此只显示项目名称。使用`--all``选项
将显示更多:

…代码块::console

$polyvers status-a
-pname:mainprog
basepath:。
gitver:
history:[]
-pname:core
basepath:core lib
gitver:
history:[]

…其中"gitver"是`` git描述`.



bump版本
----
我们现在可以使用工具为所有子项目设置相同的版本:

…代码块:console

$polyvers bump 0.0.0-f noengraves暗示所有项目,如果未给出项目名称,则在检查是否至少发生了一个版本刻印时忽略1个错误:
忽略(--force=noengraves):命令异常:未发生版本刻印,bump中止。
00:52:07注意polivers.bumpcmd.bumpcmd bumped projects:mainprog-0.0.0-->;0.0.0,core-0.0.0-->;0.0.0

`--force=noengraves``禁用一个安全检查,该检查至少需要对一个文件进行一次
修改,以便**将当前版本刻在叶中**"释放"提交
(参见下一步)。

…代码块:console

$polyvers status
-mainprog-v0.0.0
-core-v0.0.0

$git lg好,在这里增加一点"lg"输出…head-->;上分支。
提交分支标记备注
====================================================================
o最新mainprog-r0.0.0-x2标记"release"leaf commit
/core-r0.0在主干外(不是在"release"leaf commit
/core-r0.0上在head中)。
o master mainprog-v0.0.0-x2标记"version"commit
core-v0.0.0,用于将两个项目都推送到v0.0.0
o-上一个commit,在版本bump之前。

提示:
注意"abc-v0.0.0"和"abc-r0.0.0"标记之间的区别。

在源代码中,只有"release"提交具有**雕刻**\d*版本标识:

。代码块::console

$cat mainprog/mainprog/\uu init_uuu.py未触及!
导入polivers

_="0.0.0"


$git checkout-返回主版本。



在上一步中创建的标记,
使用这样的代码,通常在文件`/mainprog/mainprog/\uu init\uy:``:

代码块::python


\uuu version\uuuuu=polivers.version('mainprog')


…和分别为`/core lib/core/\uu init.py:`:`:

代码块::python

s.version('core')




代码块::console

$git commit--允许空的-m"一些头工作"
$polyvers bump ^1 mainprog
00:53:07 notic polyvers.bumpcmd.bumpcmd bumped projects:mainprog-0.0.0-->;0.0.1

$git lg
提交分支标记备注
==================================================
o最新的mainprog-r0.0.1.dev0-最新的"release"叶提交。
/branch`latest`被重置为非FF。
o主mainprog-v0.0.1.dev0-最新的"版本"提交。
o-一些head work
o mainprog-r0.0.0-现在很明显为什么"发布"提交
/core-r0.0.0被称为"leafs"。
o mainprog-v0.0.0
|0.0.0.0
o


$git checkout最新
$cat-mainprog/mainprog/mainprog/u-init-init-init-py
import polovers


u-title-mainprog
u-version-0.0.1.dev0.dev0'


>$cat-core/core/u-init-init-init-init-py
import polovers


_ title_uuu="core"
uu version_uu='0.0.0+mainprog.0.0.1.dev0'

$git checkout-


注意pep-440的"本地"部分如何
<;https://www.python.org/dev/peps/pep-0440/本地版本标识符>;`(statring with`+…`)
用于**un bumped**``core``项目的雕刻版本,表示**bumped**``mainprog``的相关版本。这个技巧对标签来说是不必要的,因为标签对所有子项目都适用回购协议。_功能:

功能
==
…包括:<;xhtml1-lat1.txt>;
准则:

,而大多数版本控制工具使用"语义版本控制"
<;http://semver.org/>;``upython's``distutils``native library
支持准超集,但更通用,` pep-440版本id
<;https://www.python.org/dev/peps/pep-0440/>;``像这样:

-pre-releases:在开发新功能时::

x.yrcn或x.ycn release candidate
x.y#最终版本

-发布后:

x.yrcn.post;发布后候选版本

-开发版本:

其中一个修饰符的组合:``+^~=``
有关详细信息,请参见mod(`polivers.vermath`)。

repo scheme
monorepo
mono project
git repo是否包含单个或多个子项目

**rational:**

当您的单个项目成功时,像这样的问题是众所周知的:

web服务器**部分的更改依赖于**核心**功能,这些功能不能
公开,因为"官方"的**有线协议**被冻结了。

关于
它臃肿的传递依赖关系(询问为什么需要*flask*库??)。

所以"拆分项目"的时间到了。但是来自**lerna**:

la124;y版本化的包
对于代码共享非常有用。然而,跨
许多存储库进行更改是混乱且难以跟踪的,跨存储库进行测试变得非常复杂,速度非常快。\ raquo

因此,*monorepo*[]\u[]\uu是解决方案。
但作为"纱"<;https://yarnpkg.com/blog/2017/08/02/introducting workspaces/>;``放在:

\laquo \oth,将项目拆分到自己的文件夹中有时是不够的。
测试、管理依赖关系,而且,快速发布多个包变得复杂,许多这样的项目采用了诸如…"raquo"这样的工具。[]<;https://medium.com/@maoberlehner/monorepos-in-the-wild-33c6eb246cb9
[]http://www.drmaciver.com/2016/10/why-you-should-use-a-single-repository-for-all-your-companys-projects/


version scheme
version tags的模式。
2x2*版本控制方案*是预先配置的,用于**mono project**和
**monorepo**存储库,分别:

-`v1.2.3`(和`r1.2.3`应用于**leaf commit**\s)
-`project-v1.2.3`(和`project-r1.2.3`用于**leaf commit**\s)


release scheme
out of trunk commit
leaf commit
release tag
r-tag
version tag
v-tag
即使在单个项目repo中,跨分支共享代码也可能会由于源代码中的版本id**reveave**\d"而导致合并冲突。
在**monorepo**\s中,版本会激增,冲突也是如此。

基于git标记(如"git descripe"),因此它们始终是最新的。


"polyvers.yaml"配置文件。

setuptools插件
setuptools集成
"polyversion"库函数作为*setuptools*"插件",并且
添加一个新的``setup()``keyword``polyversion=(bool dict)``
(有关其内容,请参见func(`polyversion.init戋u plugin戋kw`)。

当``setuptools:setup()``keyword``polyversion戋u check戋u bdist enabled=true``
插件**如果任何"bdist…"命令
不是从**雕刻**\d源(即从**r-tag**)运行的,则会中止这些命令。

若要在不编辑源的情况下启用此检查,请将以下内容添加到您的`$cwd/setup.cfg``文件中::

[全局]
polyversion_check_bdist_enabled=true



>在子项目之间标记依赖版本
[todo]当碰撞子项目的版本时,PEP-440的"本地"部分
<;https://www.python.org/dev/peps/pep-0440/本地版本标识符>;`
在Monorepo中的所有其他*依赖*子项目上,表示它们之间的关系
在碰撞时。


作为"开发"的开锁列车
[TOdo]特定的分支始终可以选择发布到*PYPI*中,仅作为
` pep-440的"开发性"版本
<;https://www.python.org/dev/pep s/pep-0440/开发性版本>gt;`,这意味着
用户需要``pip install--pre``来从这些发布序列中安装。
这是一种保护措施,以避免意外地登陆半生不熟的代码给用户。

如果git cmd失败,env var将从中读取项目的*版本*。
它不会覆盖func(`polyversion.polyversion()`)的"default_version``关键字
给定的任何值。
func(`polyversion.polytime()`)也假定关键字``no_raise=true`
找到env var。
[默认变量名:``<;pname>;_version``]


其他功能
-使用具有合理默认值的"traitlets<;https://traitletes.readthedocs.io>;``,
高度可配置;应该可以在没有任何配置文件的情况下开始使用工具
(参见"in it"命令),或者在所有命令中添加一个标志
`--monorepo``/`--mono project`,面对
相互冲突的标记。
-从git repos运行时,始终报告准确的版本
(不再怀疑您的实验数据是用哪个版本生成的)。



工作区TOdo:epoch vermath和update readme

-pep440"epoch"处理尚未工作。
-版本bump的语法尚未如命令文档的"语法"部分中所述:


$polyvers config desc--class bumpcmd
bumpcmd(\u subcmd)
----
增加或将项目版本设置为(相对/绝对)版本。
语法:
polyvers config desc[选项]<;版本>;[<;项目>;]…
-如果未指定项目,增加所有项目的版本。
-如果某些项目的版本在时间上落后(或已跳过部分),则拒绝。;
如果可能,请使用--force。
版本:-一个版本说明符,可以是绝对的,也可以是相对于当前的版本
每个项目的版本:
-*绝对的*PEP-440版本示例:
-预发布:在处理新功能时:
x.ybn#beta release
x.yrcn或x.ycn release candidate
x.y final release



-(与此工具无关)在``setup.py``脚本中,kw参数
``package dir={':<;sub dir>;}`` arg需要使用打包子项目时(也可用于"find_packages()",
检查此项目的源代码)。
但"`<;sub dir>;"必须与启动CWD相关,否则,
"pip install-e<;subdir>;``和/或"python setup.py develop`
break.

(与此工具无关)在使用"python setup.py bdist u xxx```生成项目时,
必须清理生成目录(例如"python setup.py clean--all`)"
否则,分发包将包含源所有以前构建的子项目。这也适用于在不同版本之间重新构建项目时。

-直接从git repos安装需要一个雕刻分支(例如"最新的":

pip install git+https://github.com/jrcstu/polyvers@latest

`` master``,
设置**默认版本env var**;例如,由于*polyvers*子项目
没有自定义其env var的名称,您可以安装最新的
,如下所示::


polyvers_version=1.2.3 pip install git+https://github.com/jrcstu/polyvers

。注意:
env var中给出的版本与此无关。
如果不在git repo的根目录下放置"setup.py"文件,则安装的版本仍将从git标记派生,而本地部分则从实际的git提交派生。

(与此工具无关)(根据"setuptools docs
<;http://setuptools.readthedocs.io/en/latest/setuptools.html"id10>;`,使用"package-dir"参数到"setup()"函数或"find-packages()"中的
,然后
以"pip-ins"tall git+https://…``直接从远程url
您必须使用'this officer trick
<;https://pip.pypa.io/en/stable/reference/pip_install/vcs support>;`.
例如,要安装*polyversion*子项目::

pip install"git+https://github.com/jrcstu/polyvers@latest egg=polyversion&;subdirectory=pvlib"

请注意,引号是从bash中转义"char"所必需的。使用此选项从最新版本安装:

polyversion_version=1.2.3 pip install git+https://github.com/jrcstu/polyvers egg=polyversion&;subdirectory=pvlib"



-在github中将branch``latest``设置为默认值,以显示**雕刻**\d子项目版本ID。

-see ref:*to dos*

recipes
===
自动签名标记:
=--
代码块::yaml

bumpcmd:
签名标记:true
签名用户:<;用户名或密钥id>;



_贡献截面:
…_类似工具:

2015年后停止开发:
(也由**python guide**推荐)
https://github.com/peritus/bumpversion

bump2version
原始版本的活动克隆:
https://github.com/c4urself/bump2version

releash
**monorepo**\s管理工具,它还发布到pypi:
https://github.com/maartenbreddels/releash

bump版本使用git hook:
https://github.com/arrdem/git bump

lerna
软件包。
https://lernajs.io/


pants
一个专为代码库设计的构建系统:
-庞大和/或快速增长。
-由许多共享大量代码的子项目组成。
-对第三方库。
-使用多种语言,代码生成器和框架。
-https://www.pantsbuild.org/

pbr
一个"setup"需要一个"库",它可以将合理的默认值和行为注入到为OpenStack项目维护的、专为"语义版本控制"而设计的"setuptools"*
https://docs.openstack.org/pbr/

轻松发布和标记python包;轻松、快速和整洁地发布python包。您需要更改版本号,
在更改日志中添加一个新标题,记录发布日期,svn/git/bzr/hg标记
您的项目,或者将其上载到pypi…*zest.releaser*为您处理
无聊的部分。
(也由**python guide**推荐)
http://zestreleser.readthedocs.io/


incremental
一个小的*setuptools*插件库,用于版本python项目。
https://github.com/twisted/incremental

changes
管理python库(直观徽标,
也由**python guide**推荐:

-根据提交消息自动生成变更日志条目
-遵循语义版本控制原则的cli自动增加库版本
-运行库测试
-检查包从tarball和pypi安装
-将发行版上载到pypi
-标记github存储库


管理scm元数据中的版本,而不是将其声明为
版本参数或在scm管理的文件中,除了处理
支持的scm的文件查找器
(也由**python guide**推荐)
https://pypi.org/project/setuptools\u scm/

。注意:
这个项目如何解析``git describe``标记很有趣:
https://pypi.org/project/setuptools\u scm/`;默认版本控制方案

python指南
pythons文档中有一个专门针对这个问题的指南:
https://packaging.python.org/guides/single-source package version/


在github中查找超过34个类似项目:
<;https://github.com/search?l=python&o=desc&q=bump+version&s=updated&type=repositories>;`
在awesome:https://github.com/korfuri/awesome monorepo中。





credits
==
-包含一个来自bsd工具的函数:term`pbr`从鸡蛋中调用作为**setuptools插件**时从*pkg元数据中获取版本*
这个包是使用Cookiecutter和"audreyr/Cookiecutter pypackage"项目模板创建。

-使用"towncrier<;https://pypi.org/project/towncrier/>;``生成更改。


_ Cookiecutter:https://github.com/audreyr/Cookiecutter
。_` audreyr/cookiecutter pypackage`:https://github.com/audreyr/cookiecutter pypackage



更改
==


。*towncrier*开发者须知:

-在工作站中安装命令行工具:


-在"changes.d/<;issue>;<;type>;`类似的文件中添加更改项:

echo'修复了一个东西!'>;/changes.d/1234.fix


可用的更改类型:
-break
-feat
-drop
-fix
-change
-doc
-chore

-generate new changes for the comming release::

towncrier--draft#预览
towncrier

-*towncrier*的配置文件是"pyproject.toml"。

。内容::发布
:本地:

…_待办事项:

to dos
=
-parse``git describe``类似于'setuptools\u scm plugin
<;https://pypi.org/project/setuptools\u scm/default versioning scheme>;``udo.

-drop`pvcmd/pvtags.py`,并用'polyversion`替换它?

-雕刻:不易扩展!

-可配置钩子-重构**雕刻**作为其中之一。
要在所有子项目上运行管理命令,例如
``pip install-e<;project>;``立即以"开发模式"开始工作。

这将允许在每次碰撞之前/之后执行内务管理命令和*验证测试*
预释放挂钩




rm-r dist/*build/*;
python setup.py sdist bdist廑whl-s

-添加顶级雕刻全局排除。

-使用"astor<;https://pypi.org/project/astor/>;` grafter.

-重构**版本bump代数**以支持每个段的单个修饰符
(请参见"multivermath"分支)。

-将释放序列锁定为"alpha/beta"。
基于**版本bump代数**可以选择特定分支,这将强制用户始终
使用"pip install--pre"获取这样的发布序列。
这是一种保护措施,可以避免意外地将半生不熟的代码发送给用户。

-将"polyversion"库改装为"polyvers"命令的插件。

-作为其他第三方项目的插件,烤一个烤肉器

-检查"不提交"会发生什么,例如临时打包一个轮子。

…《Towncrier发行说明》开始于2018-08-07:Polyversion-V0.2.2A1、Polyvers-V0.1.1A1
====================================


-enh:` polyversion`now在windows上找不到cmd的日志
(通常它正在执行``git``)。
-chore:合并所有*pyupd*依赖项请求。




2018-07-08:polyversion-v0.2.2a0
=================br/>-fix:`git<;2.15.0"在命令中包含多个匹配模式时出错::

git describe--match=…--match=…

(请参阅https://github.com/git/git/blob/master/documentation/relnotes/2.15.0.txt)


仍受此影响的"polyvers"命令。




2018-07-06:polyvers-v0.1.1a0
======br/>修复:未排序应用雕刻(基于其开始点)和偏移量
在同一个文件中切换移植时丢失。



2018-07-05:polyversion-v0.2.1a0
====================
-功能:envvar(`polyversion_Log_Level`)控制*polyversion*详细信息。
运行``polyversion-h``fo help.
-更改:从包元数据中搜索版本时进行小的重新排序。
-修复:添加独立的``bin/pvlib.run``from last release。
-修复:func(`~polyversion.polyversion()`)/func(`~polyversion.polytime()`)
从调用方的顶级包的路径中猜测``basepath``关键字
(不仅仅来自调用方的fpath)。



2018-07-04:polyversion-v0.2.0a2
======================
-version`v0.2.0a0`不在pypi中,用于独立的``bin/pvlib.run`.
-version`v0.2.0a1`如果``pip安装git+…`,则找不到sbling dir版本,
并且没有替换所有跳过bdist标志。



功能
--
-教非雕刻项目如何在安装pip时检索polyversion:

-函数func(`~polyversion.polyversion()`)&;func(`~polyversion.polytime()`)
现在尝试从包/站点包信息中获取版本。
-执行此func的函数(`polyversion.pkg_metadata_version()`)
修改为:

-在"baspath"同级中搜索`<;pname-<;version>;.egg info/pkg-info`文件夹
(在搜索pkg-info之前,在"basepath"中搜索元数据)
-因此,现在``polyversion()/polytime()``函数中始终需要'basepath`来定位同级目录。




polyversion_check_bdist_enabled``可翻转其默认逻辑(不按
默认值检查),因为非雕刻轮子现在安装得很好。
-将
`` repo路径-->中的``polyversion()`/``polytime()``函数的关键字重命名;basepath``表示它对于从``pythonpath/site packages/```中的同级目录检索已安装项目的
版本的重要性。



2018-06-29:polyversion-v0.1.1a3
====================br/>(实际在'v0.1.1a 1'中所做的更改,仅修复&doc msg在'a2`)

-fix:teach**setuptools plugin**关于**default version env var**。
现在可以``pip安装git+https://some.git.repo/但是从/非雕刻分支`。



<2018-06-27:polyversion-v0.1.1a0
=========br/>-feat:引入可配置**如果存在错误(例如没有g it),则默认版本env var**返回到envvar(`<;pname>;_version`),这样的变量也会设置``polytime(no_raise=true)``,
现在也支持``pname``和``default_version_env_var``kwds.


2018-06-06:polyvers-v0.1.0a1,polyversion-v0.1.0a7
============br/>大部分文档,联合发行版。

+feat:在```u version.py`
上恢复**版画**(请参阅上一版本的rational)。



2018-06-05:polyvers-v0.1.0a0,polyversion-v0.1.0a6:co2mpas就绪
============================================
+feat:restored**雕刻**on``setup.py``(仅用于w在"2018-06-03:Polyversion-v0.1.0a3:setuptools"中,由于假设客户采用了新的**setuptools plugin**关键字,因此将刻印
的"默认"版本,这很好。

+fix:报告来自**v-tag**\s和**r-tag**的任何匹配版本。

+fix:``bump``命令不雕刻与*egg*相关的文件。

+`polyversion``命令变得更加文明了(使用日志来解释相关问题stacktraces.

+dev:不要在travis上测试构建轮子…太多的模糊。



2018-06-05:polyversion-v0.1.0a5
=========================
-从"pvlib/setup.py"禁用独立轮子hack,并依赖于
*setuptools*插件,即使是对*polyversion*也要使用一次更多信息。
(但无需更新独立版,即控制盘,不受此影响)



2018-06-05:polyversion-v0.1.0a4
=========
修正"polyversion"错误(并生成一个非错误的独立轮):

-修正"polyversion",忽略"setup"(默认"polyversion"关键字.
(git(`6519a1ba`)
-修正:` polyversion"停止吃一半自己的狗粮:不能可靠地使用
**安装工具插件**进行安装。(git(`56a894cde`)
-bdist check**的monkeypatching*distutils*由于是"旧类",在*py2*
中失败。(git(`1f72baec`)

-doc:关于如何绕过**bdist check**的固定建议:


您可以绕过此检查,通过在中添加"跳过polyversion check"选项
,创建一个包含非雕刻源的包
(尽管它可能无法正常工作)你的```$cwd/setup.cfg``文件,像这样的:


[global]

>skip-polyversion\u check=true
……





<2018-06-03:polyversion-v0.1.0a3:polyversion-v0.1.0a3:*setuptools*

===========================================br/>============================2)中,无法从r-tags中释放,因为``setup()`
从v-tag中报告版本。

-q:是否需要新的setup关键字```--polyversion release``?
-a:不,两个都查一下。
-`v0.1.0a0'也因为同样的原因被取消了,但在路上的某个地方,
修复被还原(**bdist check**仅适用于r-tag)。
-`v0.1.0a1`刚刚标记了我们的``setup.py``文件吃了我们的狗粮。

breaking changes
----
-删除了func(`polyversion.polyversion()`)中的所有位置参数;
容易出错。它们都已转换为关键字参数。

-在mod(`polyversion`)
中重命名的数据(也适用于类(`polyvers.pvproject.project()`)):

pvtag_frmt-->;pvtag_format
vtag_frmt-->;vtag_format

-在func(`polyversion.polyversion()`)
(也影响类(`polyvers.pvproject.project()`)):中更改的参数:


;默认-->;默认版本
标记frmt-->;标记格式
-->;vprefixes(new)
-->;is_release(new)

-当无法导出版本/时间
时,再次还原要引发的"0.0.2a9"默认逻辑。现在默认情况下,它会引发,除非默认版本或func(`polyversion.polytime()`)的
``no_raise```.

-停止雕刻``setup.py``文件;客户端应该使用*setuptools*plugin
为这些文件派生版本(请参阅下面的新功能)。
有关参考信息,这是从默认类(`~project`)的
配置中删除的元素(在yaml中)::


globs:[setup.py]
嫁接:
-regex:-
(?xm)
\b版本
(\*=\*)
.+?(,
\*[\n\r])+

-*polyversion*库同时搜索*v-tags*和*r-tags*(除非有限制)。
以前,即使签出了一个*r-tag*,也都是"polyversion"逗号nd
和"polyvers bump"将忽略它,并从*v-tag*报告+1!

features
--"polyversion"库函数作为*setuptools*"插件",并且
添加了两个新的"setup()`"关键字,用于从pkg-info或git标记派生子项目版本
(请参见func(`polyversion.init_plugin_kw`)):

1。关键字:``polyversion-->;(bool dict)``
当dict时,它的键大致模拟func(`polyversion()`),
中的键,可以这样使用:

代码块:python


"mono_project":true,false默认
…#请参阅"polyversion.init_plugin_kw()",以获取更多密钥。
},
安装程序要求=[…,"polyversion"],




2。关键字:``跳过多版本检查-->;bool`
如果为真,则禁用**bdist check**,如果为假(默认),
任何'bdist`(例如``bdist` u wheel``),如果未从**发布标记运行
,则命令将中止。
您可以绕过此检查,创建一个带有非雕刻的包sources
(尽管它可能无法正常工作),方法是从如下命令行调用设置脚本::


$python setup.py bdist_wheel--跳过polyversion check

-`bump`cmd:用它们的"git descripe`-派生
版本(由``--bumpcmd.reveave_bumped_only``标志控制)。

-为可读取打印输出和从新的"project.enabled_engarves"列表中引用的雕刻和嫁接指定名称。(namengraves)

-``polyversion-t``命令行工具打印完整的标记(而不是版本)
,以便很容易知道它是v标记还是r标记。

因此,现在每个代码更改都可以在同一个提交中描述其更改,而不发生冲突。(towncrier)
-用法:解释如何在脚本的"setup.py"中设置项目pep(`0518`)``pyproject.toml`
file&;``setup`需要``关键字。
-add`pbr`,`增量式和"zest.release"在ref中:*类似的工具*部分
作为*setuptools*插件。
-使用术语表重新编写和缩小了开头部分。

-杂务开发:
-deps:不要固定"packaging==17.1",任何更大的+17都可以正确解析
版本。




2018-05-24:0.0.2A10:polivers
==============
-fix:setup的默认雕刻略有变化。py:version=…`.
-从我们自己的狗粮来源中删除默认版本
(影响开发此工具的安装)。
-重构:将``pvlib.whl``和``pvlib.run``合并到一个可执行文件中,并在``bin/pvlib.run``中导入独立的控制盘,该控制盘由
``polyversion-0.0.2a9``生成,发布如下。
-doc:展开安装和参与此项目的部分。
-chore:拧紧各种测试线束。


2018-05-24:0.0.2a9:polyversion
----
第二个临时版本嵌入新的"bin/pvlib.run`.

-反转默认的``polyversion()/polytime()``函数在vtags丢失时不会引发
修复:`pvlib.run`shebang to use```!/usr/bin/env python``要在linux上工作。

2018-05-23:0.0.2a8:polyversion
--------
嵌入新的``bin/pvlib.run`.


-修复``polyversion`` barebone命令的临时版本(不安装
完整的"polyvers"工具时使用的实用工具)。
-feat:在func(`polyversion.polyversion()`)中使项目名可选;如果未给定,则defaults到调用方模块的最后一段。
-doc:关于如何在自己的自述文件上使用lib的基本解释。



2018-05-23:0.0.2a9.post0:polivers
=================================================================================================================-`` init``命令:
-fix:正在创建无效的'`.polyvers.yaml``配置文件
,除非给出了'`--monorepo/--mono project``标志。
-feat:仅当给出了新的'`--doc``标志时,才在生成的文件中包含配置帮助。
-feat:通知用户自动发现的项目以及生成了什么类型的配置文件。
-各种修复。




2018-05-19:0.0.2a8:polyvers
========
-fix(bump):正在雕刻所有项目,而不限于命令行-命令中指定的那些
语法略有变化。
-杂务:从现在起停止增加"polyversion"版本。
-文档:修复所有sphinx错误和api引用。

2018-05-18:0.0.2a7
----
嵌入重新授权的"pvlib/bin/pvlib.whl`,
euplv1.2-->的临时版本;MIT



2018-05-18:0.0.2A6:``凹凸`!
==
==
-``bump``命令:
-feat:```--amend``现在可以工作了
-feat:```--只雕刻`.
-feat:在执行操作时记录``假装`.
-feat:记录最后消息中雕刻的文件。
-fix(雕刻):不要浪费循环/记录空匹配(次要)上的消息。



2018-05-18:0.0.2a5
======
实际上大多数更改都发生在下面的"临时"版本"v0.0.2a2"中。

-feat:制作一个独立的多版本lib-wheel,以便在安装&;时引导
;从源代码生成(库尚未安装)。
-添加"bin/package.sh",将"pvlib"控制盘创建为可执行文件"dist/pvlib.run"。
-doc:fix rtd&;PYPI站点。

2018-05-18:0.0.2A4
----
doc:PYPI登录页错误。


2018-05-17:0.0.2A3
----
到目前为止,"pvcmd"实际上已损坏;缺少"polyversion"lib
依赖项!

2018-05-17:0.0.2a2
----
生成下一版本所需可执行轮的中间版本。



2018-05-17:0.0.2a1:*Monorepo*!
===
==
-第二版,自己的"mono project"分为两个项目"monorepo":
-**polivers:*命令行工具
-**polyversion:*程序源从git标记派生版本的库代码
-`init`,`status`,` bump和config命令可以工作。
-在git根目录下读/写yaml配置文件``.polyvers.yaml`,
并且可以自动发现使用过的配置(从现有的git*标记*
或项目文件中)。
-同时支持`--monorepo``和`--mono project``配置。
-默认情况下````uuu init`,``"setup.py"和"readme.rst"文件都刻有"bumped"版本。





2018-05-16:0.0.2a0:0.0.2a0
=>









2018-01-01-29:0.0.1:0.1:0.1:0.1:0.1:0.1:0.1:0.1:0.0.1:0.0.1:0.0.1:0.0.0.0*

========================

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java 安卓 XMLPullParser错误   Java响应网格布局   Java中使用递归的不同方法   java变量可能尚未初始化(边加权图)   java如何将这样的文件插入MySQL数据库   java云端点:不允许实体类型的数组或集合   java(编译器或jvm)是否以不同方式处理类的静态最终成员?如果是,怎么做   java如何从lambda表达式返回新的非抽象映射?   java JDK 7支持的最大Spring版本是什么   我们如何从java类生成DTD   java在我的例子中BindingResult、FieldErrors或GlobalErrors是否可以为null?   java[LibGDX][GWT]读取文件外观时出错。HTML格式的json[序列化异常]   字典Java不可修改密钥集映射   java Admob在firebase sdk之后显示测试广告,但不显示真实广告