大规模VCS变更管理
项目描述
Silver-Platter使向版本控制系统(codemods)中的源代码贡献可自动化的更改成为可能。
它自动创建远程仓库的本地检出,执行用户指定的更改,在远程托管网站上发布这些更改,然后创建拉取请求。
此外,它还可以对已提出合并的分支执行基本维护 - 例如,如果它们由于上游更改而存在冲突,可以重新启动它们。
银盘(Silver-Platter)为Debian Janitor(https://janitor.debian.org/)和Kali Janitor(https://kali.janitor.org/)提供动力。然而,它是一个独立的项目,也可以作为一个独立的工具使用。UI界面仍然有点粗糙,我将非常感激使用它的人的任何反馈 - 请在https://github.com/jelmer/silver-platter/issues/new的问题跟踪器中提交错误。
入门
要登录代码托管站点,使用svp login
svp login https://github.com/
创建一个变更作为合并提案的最简单方法就是运行类似以下命令
svp run --mode=propose ./framwork.sh https://github.com/jelmer/dulwich
其中framwork.sh对工作副本进行一些修改,并将pull请求的提交信息和正文打印到标准输出。例如
#!/bin/sh sed -i 's/framwork/framework/' README.rst echo "Fix common typo: framwork ⇒ framework"
如果您留下待处理的变更,银盘将自动创建一个提交,并使用脚本的输出作为提交信息。脚本也可以创建它们自己的提交 - 如果它们需要创建多个提交,这特别有用。
食谱
为了使此过程更容易重复,可以使用食谱文件。对于上面的示例,我们可以创建一个包含以下内容的framwork.yaml
--- name: framwork command: |- sed -i 's/framwork/framework/' README.rst echo "Fix common typo: framwork ⇒ framework" mode: propose merge-request: commit-message: Fix a typo description: markdown: |- I spotted that we often mistype *framework* as *framwork*.
要执行此食谱,运行
svp run --recipe=framwork.yaml https://github.com/jelmer/dulwich
请参阅example.yaml以获取带有大量注释的示例食谱。
此外,您可以通过指定候选人列表在一系列仓库上运行特定食谱。例如,如果candidates.yaml看起来像这样
--- - url: https://github.com/dulwich/dulwich - url: https://github.com/jelmer/xandikos
那么以下命令将按顺序处理每个仓库
svp run --recipe=framwork.yaml --candidates=candidates.yaml
批量模式
当您要做出大量更改并且希望在发送之前审查或修改差异时,请使用批量模式
svp batch generate --recipe=framwork.yaml --candidates=candidate.syml framwork
这将在名为“framwork”的目录中创建一个名为batch.yaml的文件,其中包含所有待处理更改
name: framwork work: - url: https://github.com/dulwich/dulwich name: dulwich description: I spotted that we often mistype *framework* as *framwork*. commit-message: Fix a typo mode: propose - url: https://github.com/jelmer/xandikos name: dulwich description: I spotted that we often mistype *framework* as *framwork*. commit-message: Fix a typo mode: propose recipe: ../framwork.yaml
对于每个候选人,将创建带有更改的克隆。您可以按适当的方式检查和修改这些克隆。
在审查完更改后,根据需要编辑batch.yaml - 删除看起来不正确的条目,编辑合并请求的详细信息等。
一旦满意,就可以发布结果
svp batch publish framwork
这将发布所有更改,使用batch.yaml中指定的模式和参数。
batch.yaml会自动删除任何在工作中已经完全落地的条目,即pull请求已被合并或更改已推送到origin的情况。
要检查您更改的状态,运行svp batch status
svp batch status framwork
要刷新可能已经过时的任何合并提案,请再次运行发布
svp batch publish framwork
支持的主机
目前,以下代码托管站点得到支持
GitLab实例,例如Debian的Salsa或GNOME的GitLab
与Debian软件包一起工作
Debian软件包的几个常见操作在debian-svp命令下有专门的子命令。这些也会自动查找指定的任何Debian软件包名称的包装仓库位置。
upload-pending:构建和上传软件包,并推送/提出变更日志更新。
run:类似于svp run,但特定于Debian软件包:它确保upstream和pristine-tar分支可用,可以选择更新变更日志,并可以测试分支是否仍然可以构建。
Debian特定的示例食谱提供在 examples/debian/ 目录中。
lintian-fixes.yaml:运行 lintian-brush 命令以修复 lintian 报告的常见问题。
new-upstream-release.yaml:合并新的上游版本。
multi-arch-hints.yaml:应用多架构提示。
orphan.yaml:将软件包标记为弃用,更新其Maintainer字段并将其移至Debian salsa公共组。
rules-requires-root.yaml:将软件包标记为“Rules-Requires-Root: no”。
cme.yaml:从 cme 软件包 运行“cme fix dpkg”。
debian-svp run 接收软件包名称参数,这些参数将解析为软件包中的 Vcs-Git 字段指定的存储库位置。
有关详细信息,请参阅 debian-svp COMMAND --help。
运行 debian-svp 的示例
# Create merge proposal running lintian-brush against Samba debian-svp run --recipe=examples/lintian-brush.yaml samba # Upload pending changes for tdb debian-svp upload-pending tdb # Upload pending changes for any packages maintained by Jelmer, # querying vcswatch. debian-svp upload-pending --vcswatch --maintainer jelmer@debian.org # Import the latest upstream release for tdb, without testing # the build afterwards. debian-svp run --recipe=examples/debian/new-upstream-release.yaml \ --no-build-verify tdb # Apply multi-arch hints to tdb debian-svp run --recipe=examples/debian/multiarch-hints.yaml tdb
为Debian软件包提供了以下环境变量
DEB_SOURCE:源软件包名称
DEB_UPDATE_CHANGELOG:指示是否应添加changelog条目。可以是“leave”(保留)或“update”(更新changelog)。
凭证
可以使用 svp hosters 子命令显示silver-platter所了解的托管站点。
svp hosters
要登录新的托管站点,只需运行 svp login BASE-URL,例如。
svp login https://launchpad.net/
退出状态
svp run 如果没有进行更改,则退出状态为0,如果至少已更改一个存储库,则退出状态为1,如果出现问题,则退出状态为2。
Python API
除了命令行API之外,silver-platter还有一个Python API。核心类是 Workspace 上下文管理器,它有两种形式
silver_platter.workspace.Workspace(用于通用项目)
silver_platter.debian.Workspace(用于Debian软件包)
示例:在 dulwich Debian软件包中添加新条目到changelog文件,并使用该更改创建合并提案
from silver_platter.debian import Workspace import subprocess with Workspace.from_apt_package(package="dulwich") as ws: subprocess.check_call(['dch', 'some change'], cwd=ws.path) ws.commit() # Behaves like debcommit ws.publish(mode='propose')
项目详情
下载文件
下载适合您平台的自定义文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分发
构建的分发版本
silver_platter-0.5.36.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8827031392d3fa00c36bc029a6674d48f22c14681d123c23d62e8ca036e09684 |
|
MD5 | 4da6f441734bac990f3e11b250d591af |
|
BLAKE2b-256 | 02185a3a25d20af121851c82c315f94a5586117b59a2b9526ba6f7ec287a7025 |
silver_platter-0.5.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 59547db3d8e82d7f87d92d62676a8c02cae63c8513a3f55e0dbdc1dfbf9b73fc |
|
MD5 | 283b5b3c3d96727c4a2ddf75bd16cd57 |
|
BLAKE2b-256 | 667989346d5ef15da9d8b25c7a5212335d9cd07a7e98d23855c0fea67aa8dfaf |
哈希值 用于 silver_platter-0.5.36-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ec7a119a4ce79d6ddeed4057a9218049663f3dbfd57bc98adad348186a62de1e |
|
MD5 | 420dcdcae383932fbe187872bc8cd86e |
|
BLAKE2b-256 | 57a9f73d1cfd0ef97c3a75b7ee7c1280e30dc76007869993e3824525b4de07be |
哈希值 用于 silver_platter-0.5.36-cp313-cp313-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2ca741aa6b465a34f6d6e5439f91e78d606ed8c02d5490f2317425afd5b89d2a |
|
MD5 | 90194567160accc42d51d6e5bd2aa46c |
|
BLAKE2b-256 | 251a523a9459b9b571f7a5b18ca12b0e805a2737222ea026b97d2a06cfaacaf9 |
哈希值 用于 silver_platter-0.5.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cbb0abf5744140a838d94cb520e741a822f3b557c2664b6b489ff855e7df0f4d |
|
MD5 | d1ea1ca518d8885bb53bd82838e284f1 |
|
BLAKE2b-256 | b8570dd7ab93aa92961b80572dc4c1d72cdbbfa1565cd410b8eac8a3a14d3f9b |
哈希值 用于 silver_platter-0.5.36-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 972946181d1f72a7197899ed18ea9e9de4dd0c2f498be77466faf340cce64ce1 |
|
MD5 | 8500cee0ed3859eb015ec32048a7fc2b |
|
BLAKE2b-256 | c3d2dec1a2da97364f37d3b5576aaa3af22db9329d584133f280ee99f4d35fce |
哈希值 用于 silver_platter-0.5.36-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 77d81c58bf04a1ca02877d9c553f75e1578799ff789d9139efd06aa9687b8ad5 |
|
MD5 | cf7900419131cb4da3d7f63518a2aaac |
|
BLAKE2b-256 | e873b6d3bbd012039653614ac09bcee473d48656f3f60147afd9b7247ca2ebc5 |
哈希值 用于 silver_platter-0.5.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 495eb01a4af09ef76158e5014426279c3c763a3baf9d63badcd9d8a3c411ff6f |
|
MD5 | 80642e9813d4feec598f72649259a0db |
|
BLAKE2b-256 | 6393d2a2033343856fdce8ef57cf5c01e1fd9fae6023af64f6ec79527ade299f |
哈希值 用于 silver_platter-0.5.36-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f172a128f577e9fac0ea81322c395576fca77bf84c1431fb4675ebf03baaf14d |
|
MD5 | f6dab07495fa61b2743ea301ba2044f5 |
|
BLAKE2b-256 | be2a62503923bb86eb859ee6df5219bfc6c4c5cdb862c5fa69c6089a5f54d569 |
哈希值 用于 silver_platter-0.5.36-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f559e3dbc150eaac6f5a5c423137fa7fe89fc831b0e9a7e64a47e4df063851b6 |
|
MD5 | 4e7567111ffa6cc4f4d4ae4eed8762b8 |
|
BLAKE2b-256 | 03470117efd8732ea6b766e03224556ba09dbed940cd5f0b60f6195ac5155a49 |
哈希值 用于 silver_platter-0.5.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b80ae6044f76d895330bf19103ea77a2d9a74c69aedc51decc47f7f1e8ddd294 |
|
MD5 | ccb68c3f067bce84da81ad6923d23f24 |
|
BLAKE2b-256 | eb7fec2472acb7f6fbcffa333b3a4b3cfce1a2bedb74b20c2f321342c6c92394 |
哈希值 用于 silver_platter-0.5.36-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be644bd07fcd3836abecf0b0cde64fb0d04491d31191cb813d9483eaed2e2874 |
|
MD5 | 26e73eace818820f90bef7279d0cadea |
|
BLAKE2b-256 | d17b7e26db7021c9d67ac8d401e9efb481559f4bf1c32be8f47b0db223ce3cde |
哈希值 用于 silver_platter-0.5.36-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fa2f6ecf9058431ac0f9af8ad6bd1fdb391b60fbfd22ee43dafcb63eca7cc415 |
|
MD5 | 68b30c2b5d9efb8158b32fc756812234 |
|
BLAKE2b-256 | f523a1cd9fca24b4b9379bbe1c647f7e7488b553e97b99ab78ce137361a98611 |
哈希值 用于 silver_platter-0.5.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 06b593c5f2bab4952cb1b8986e4b0c89eee3eb3487004a4b14a1cedd57eafd63 |
|
MD5 | c129d33a6c0d3b8f2ea09967a07eebcf |
|
BLAKE2b-256 | b1021efdee194890139b5fcb878bcc1b6bd41be98511e1df0dfebac9bfef4418 |
哈希值 for silver_platter-0.5.36-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b27ad2111ded1efc222a7755ccd8bdb77c34d9dfd7ee0b23219aa3413f7133bb |
|
MD5 | ca0491902c7f5a0b17fcf2d6d6187ae1 |
|
BLAKE2b-256 | 4edf6cdde11702e451f741da0deaea948f549cf2dd01570548c0031fe94015be |
哈希值 for silver_platter-0.5.36-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5dcbb955327ee077e587014bf24b64a9e412637fa86cd6aaf6bbabc21139e92a |
|
MD5 | 0eaef5431a45849237fec3a5c5647853 |
|
BLAKE2b-256 | 1851dfbd159580558bc85c4d93bd568863ad221e1d79cbb1d2c574f145fb662c |
哈希值 for silver_platter-0.5.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d264b6f6a7629f619c17c6eac165c0ff61cb3832b89c5aa8a1d8f848e5c185a |
|
MD5 | ecb8f73d223480c68295c8bd3b9e3ca9 |
|
BLAKE2b-256 | c0892982fb3fce6040064ff292562baf429929236e491436d02ee94997baea40 |
哈希值 for silver_platter-0.5.36-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2cb5470dc86de3298653c15bc85d4e937b1ffca0cbb89a224dd5f2dc92b3f469 |
|
MD5 | 00e304c0ab5afaaa23bc5c3459d6ae3b |
|
BLAKE2b-256 | 653ebf16360fa92c2a6c40e1aac19f7f78556723efff65af21e3510e6345acb0 |
哈希值 for silver_platter-0.5.36-cp38-cp38-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c753bae6a111f4e86dc5c972a252aac18a78c7f1d674a3e904e3119fc26752e6 |
|
MD5 | 23fa1b5381ddb4ee8c6a46150d766b05 |
|
BLAKE2b-256 | 627531e9627b1842a7c039eb907d583646c2fa57d96dfd196a54e6220d0702ea |