devpi-pr:devpi-server和devpi-client的拉取请求工作流程插件
项目描述
devpi-pr:devpi的拉取请求插件
此插件为devpi-server添加了拉取请求工作流程,并支持devpi-client的相应命令。
安装
devpi-pr需要与devpi-server一起安装以启用拉取请求功能。
在客户端机器上,没有插件也可以创建和提交拉取请求,但安装了插件会更加方便。所有其他功能都需要安装与devpi-client一起的devpi-pr插件。
您可以使用以下命令进行安装
pip install devpi-pr
无需配置,因为devpi-server和devpi-client将通过setuptools入口点机制调用钩子来自动发现插件。
动机
许多Python项目具有复杂的依赖关系,并且通常被分割成单独的包。
对于此类项目,将一组包作为一个单一单元处理将是有益的。
在组织内部,通常需要一个经过验证的包发布流程。
本插件引入了拉取请求的概念,以帮助完成所有这些工作。
成功的拉取请求的结果是在目标索引中单个原子更新包。
用法
当与devpi-client一起安装时,devpi-pr插件会添加新的命令。
- new-pr
创建一个新的拉取请求。
- submit-pr
提交现有的拉取请求以供审查。
- list-prs
列出拉取请求。
- review-pr
开始审查提交的拉取请求。
- abort-pr-review
中止拉取请求的审查。
- approve-pr
批准已审查的拉取请求。
- reject-pr
拒绝拉取请求。
- cancel-pr
由提交者取消拉取请求的已提交状态。
- delete-pr
完全删除一个拉取请求,包括任何上传的包。
在devpi-server中,一个拉取请求由一个特殊的pr索引表示。它大部分像常规索引,但有额外的限制和行为。
所有更改拉取请求状态的命令都会要求输入一个消息,并接受-m选项来直接提供。当设置EDITOR环境变量时,它用于打开编辑器提供消息,否则使用简单的提示。
创建拉取请求
假设创建了一个新的功能,该功能需要在多个包中进行更改。我们目前在开发索引user/dev上工作,其中我们有两个更改的包pkg-app 1.0和app-dependency 1.2。应该最终用于生产的索引命名为prod/main。
目标索引的pull_requests_allowed选项必须为True
$ devpi index prod/main
http://example.com/prod/main:
type=stage
bases=root/pypi
volatile=True
acl_upload=root
acl_toxresult_upload=:ANONYMOUS:
mirror_whitelist=
pull_requests_allowed=True
我们首先为目标创建一个新的拉取请求
$ devpi new-pr new-feature prod/main
这创建了一个新的pr索引,命名为user/new-feature。
接下来,我们将现有包从我们的开发索引推送到pr索引。
$ devpi push pkg-app==1.0 user/new-feature
$ devpi push app-dependency==1.2 user/new-feature
由于pr索引大部分像常规索引,因此也可以使用devpi upload或标准工具如twine直接将新包上传到pr索引。
为了方便起见,在首次创建时也可以列出多个包,让它们自动复制
$ devpi new-pr new-feature prod/main pkg-app==1.0 app-dependency==1.2
如果只给出包名,则使用最新版本。
之后,可以将拉取请求提交以供审查
$ devpi submit-pr new-feature
这会要求输入一个消息。
此时,pr索引的状态设置为待处理。
审查拉取请求
任何具有对目标索引的写入访问权限的用户(请参阅devpi-server中索引的acl_upload选项)现在都可以审查拉取请求。
要查看索引的当前拉取请求,请使用list-prs命令
$ devpi list-prs prod/main
pending pull requests
user/new-feature -> prod/main at serial 123
使用review-pr命令开始审查
$ devpi review-pr new-feature
此时,可以使用pip等工具像常规索引一样使用pr索引安装新包。
审查完成后,可以接受它
$ devpi accept-pr new-feature
这又需要像submit-pr命令一样输入一个消息。
当接受拉取请求时,所有包的最新包含版本将一次性复制到目标索引。之后,pr索引会自动删除。
如果在执行review-pr命令之后,索引有任何变更,那么accept-pr命令将失败。要继续使用带-u选项的review-pr命令,需要这样做。
$ devpi review-pr -u new-feature
这可以防止意外变更被接受。在审查变更后,可以再次接受pull request。
如果需要进一步处理pull request,可以使用reject-pr命令并附带一条消息来拒绝。
$ devpi reject-pr new-feature -m "See comments in ticket #42 about a bug I found."
手动创建pr索引
也可以手动创建一个pull request。这不需要与devpi-pr一起安装devpi-client,但操作更为复杂。
首先需要创建一个新的pr索引。索引类型必须是pr,在bases、states和messages中指定目标索引。
$ devpi index -c new-feature type=pr bases=prod/main states=new messages="New pull request"
索引创建完成后,可以使用devpi upload将其上传到索引,或者使用devpi push从另一个索引推送。
最后,需要将索引的状态更新为pending,并添加状态变更消息。
$ devpi index new-feature states+=pending messages+="Please approve these updated packages"
变更日志
1.0.0 - 2019-10-31
初始发布。[fschulze (Florian Schulze)]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
devpi-pr-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 64ac2fd8eee1973e36ed429e4117d2e87169c7419ca1cc42bba1815c984dd4e2 |
|
MD5 | cc1dbb19b4fcea54f26b0f15d24befd2 |
|
BLAKE2b-256 | 14789b0931ae243c2cdac49ecd69ce732ef27b5eed1abc8c7bd515b00d81bd4f |
devpi_pr-1.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ba2885c820d0dbabf19ec61ac28c6d928778c148b7cf16abf8627ae19118e6e6 |
|
MD5 | 8040d510727b05d73f49180e8be5462f |
|
BLAKE2b-256 | ad1614cf6ac2e4e15302cabf0cdd337771477df8f4989be6e8757fb61195f409 |