首页/新闻资讯/正文详情

VisiData 稳定版发布全流程指南:从分支合并、版本号同步到 PyPI 与多发行渠道分发

发布时间:2026/9/25 5:08:01 来源:云帆数科 栏目:资讯中心
VisiData 稳定版发布全流程指南:从分支合并、版本号同步到 PyPI 与多发行渠道分发
数据分析CLI数据可视化【免费下载链接】visidataA terminal spreadsheet multitool for discovering and arranging data项目地址https://gitcode.com/gh_mirrors/vi/visidata点击查看免费下载本文是 VisiData 项目内部发布检查清单dev/checklists/release.md的完整解读与实操展开。它详细梳理了从stable分支整理、文档同步、自动化/手动测试到版本号提升、man 手册构建、PyPI 上传、git 打标签再到 conda-forge、Homebrew、Debian、私有 deb 仓库等多渠道分发的端到端发布流程。读完本文你将掌握 VisiData 每次发布 stable 版本所需的全部命令、涉及的具体文件setup.py、visidata/main.py、visidata/init.py、dev/mkman.sh 等以及各发行渠道的同步要点。一、发布流程总览VisiData 的发布过程可以划分为四个阶段发布前整理合并分支、核对文档与 CHANGELOG、跑自动化测试与手动测试清单版本号与构建提升版本号、更新 setup.py 依赖、构建 man 手册页代码发布合并回各分支、推送 stable、上传 PyPI、验证安装、打 git tag收尾与分发撰写 release notes、关闭已解决 issue、同步 conda/Homebrew/Debian/私有 deb 仓库。以下各节按该清单的原始步骤顺序展开并注明每一步在仓库中的落点与依据。二、发布前分支整理与文档同步1. 合并stable到develop必要时发布的起点是确保develop分支包含stable上的全部内容。如果两个分支存在分叉先执行git checkout develop git merge stable保证后续从develop构建出的产物不会丢失 stable 上已有的修复。2. 核对文档与 docstring 是否与最新功能同步发布前必须确认三类文档与最新代码一致CHANGELOG用 git 日志生成自上次 tag 以来的提交清单逐条审查是否已收录进 CHANGELOG.mdgit log --prettyformat:%s :%ae $(git tag | tail -1)..HEAD该命令以提交主题 :作者邮箱的格式列出从上一次打 tag 到 HEAD 之间的全部提交是撰写版本变更记录的原料来源。以当前仓库为例CHANGELOG.md 顶部为# v3.4 (2026-06-30)条目按New Features、Improvements分类并标注了关联 issue 号如#2861、#2594新版本发布时应照此格式在文件最前面插入新条目。manpage即 visidata/man 下的vd.1/visidata.1/vd.txt应反映新增的命令与选项构建方法见下文第五节visidata.org 官网重点检查 formats 等表格是否与新增/变更的文件格式同步清单特别提醒官网表格需用 prettier 格式化对应 saulpw/visidata 的 PR #2056 的讨论避免格式错乱。三、发布前自动化测试与手动测试3. 运行 develop 分支的自动化测试清单要求用dev/test.sh跑通 develop 的自动化测试。从仓库结构看dev/test.sh 本质是 tests/test-vdx.sh 的包装器负责cmdlog golden 测试重放.vd/.vdj/.vdx命令日志将输出与 tests/golden 目录下的期望结果.tsv等逐一对拍更完整的回归由make test-all即 dev/test-all.sh承担它遍历tests/test-*.sh覆盖 save、filetype、url、stdin、macro、perf、options 等十几个专项每个脚本以TEST_TIMEOUT默认 120 秒限时超时则SIGABRT并标记 FAIL最终汇总PASS: N/M tests passed并给出失败清单仓库还配置了 git 钩子 dev/hooks/pre-push内容即make test-all也就是说推送任何分支前都会自动触发全量测试发布时的推送到 stable 也不例外。4. 走一遍手动测试清单自动化测试无法覆盖终端交互、真实网络等场景因此还需按 dev/checklists/manual-tests.md 逐项人工验证重点包括cmdlog 录制与重放options/rows/columns 的日志记录、空 sheet 上的命令执行、abort 行为批量模式两种写法bin/vd -b -p tests/append.vd与bin/vd -p tests/append.vd -b真实外部 URL 加载与 open-row如https://visidata.org/usage.tsv的 TLS 实网访问CI 只用 loopback server 自动化测试 tests/test-url.shSplit window 多窗格Z/gZ/zZ/gTab下的 sheet 栈移动、窗口大小调整、焦点切换编辑与保存edit-cell后CtrlO拉起$EDITOR并回填结果机制本身已有自动化测试 visidata/tests/test_editor.pyCtrlO按键需手动验证overwritec保存到已存在文件时的确认/中止提示宏录制、聚合器 palette、z;后调用 shell 管道如echo | Ceci nest pas une pipe、vd -b -i -p tests/fill.vdj sample_data/a.tsv下批量数据仍可编辑等。四、setup.py 依赖核对与版本号提升5. 核对 setup.py 与 requirements 同步发布前应审查 setup.py当前依赖版本检查install_requirespython-dateutil、importlib_resources; python_version3.9、standard-mailcap; python_version3.13以及platform_system Windows条件下的windows-curses 2.4.1是否需要随上游升级Python 版本确认python_requires3.8是否需要随新版本 Python 的发布而调整新增插件与 extras新加入的插件/扩展是否已登记进extras_require。仓库中testextra 聚合了全部测试依赖brotli、h5py、openpyxl、pandas、pyarrow、pytest、PyYAML、xport 等allextra 则由 requirements.txt 动态生成——all_requirements()会跳过注释行和githttps形式的可编辑依赖若新增了这类条目发布时也要同步更新。6. 设置版本号v#.#.#版本号应提升到下一个合理的 semver 号并同步到五个位置位置当前仓库示例说明CHANGELOG.md 最前部# v3.4 (2026-06-30)新条目需带发布日期与主要变更要点manpage 中的日期visidata/man/vd.1随make man一起更新READMEREADME.md安装章节中的版本引用visidata/main.py__version__ 3.5dev源码级版本号开发版带dev后缀visidata/init.py__version__ 3.5dev与 main.py 保持一致setup.py__version__ 3.5dev打包元数据版本其中setup.py显式注释了tox 无法直接运行python3 setup.py因此版本号不从包内 import而是三处各自维护发布时务必逐一核对避免 PyPI 上的版本与源码不一致。五、构建 man 手册页并同步官网7. 运行make manmake man对应 Makefile 中的man目标它依次执行dev/mkman.sh在/tmp/visidata_manpages构建目录中先用 visidata/man/parse_options.py 从vd-cli.inc/vd-opts.inc生成 CLI 选项段再经soelim -rt -Igroff 宏展开、preconv -r -e utf8处理得到vd.1与visidata.1最后MANWIDTH80 man输出纯文本vd.txt。该脚本需要soelim、preconvgroff与man工具dev/mkmanhtml.sh将vd.1经GROFF_NO_SGR1 man | ul | aha --no-header转成 HTML 并封装进 docs/man.md带 eleventyNavigation front-matter供官网直接使用。清单特别强调sdist 构建会自动生成 man 页且失败会硬性报错。这在 setup.py 中有明确实现ensure_man_pages()在构建时先检查三个 man 文件是否存在不存在则尝试调用dev/mkman.shsdist命令类更进一步——若 man 页缺失直接SystemExit(man pages required for sdist; install groff and man-db and rerun)。这是吸取 v3.4 曾静默缺失 man 页issue #3019的教训。发布时请把生成的 docs/man.md 同步到 visidata.org 网站的site/docs/man。六、分支合并、motd 与推送7. 合并develop到stable测试与文档就绪后将develop合入stable这是发布物料的最终来源。14. 更新 motd欢迎消息为新版本上传新的 motd实际运行一次 VisiData确认它能正常下载并展示新 motd。motd 的下载逻辑位于 visidata/motd.py该模块负责在启动时拉取远端消息若发布后版本号与 motd 不匹配或地址失效用户将无法看到新公告因此这一步放在推送前验证最稳妥。注意原清单编号此处为 14位于 8 之前属于编号排序的笔误实际执行顺序仍以先合并、后推送为准。8. 把stable合并回其他分支发布后需要把stable的成果回灌到仍在维护的其他分支若分支与 stable 冲突较少则保留该分支继续维护若冲突过于严重、维护成本高则直接清空该分支放弃继续维护。9. 推送代码到 stablegit push origin stable推送会触发 dev/hooks/pre-push 再次运行make test-all全量测试通过后才会真正推送。七、发布到 PyPI 并验证安装10. 推送 stable 到 PyPIa. 配置~/.pypirc清单给出了完整的.pypirc模板需填写用户名与密码通常配合 API token 使用[distutils] index-servers pypi testpypi [pypi] repository:https://upload.pypi.org/legacy/ username: password: [testpypi] repository: https://test.pypi.org/legacy username: password:b. 构建并上传rm -rf dist/ rm -rf build/ python3 setup.py sdist bdist_wheel chmod -R arX dist ls dist/ twine upload dist/*关键点先清空旧的dist//build/避免残留物污染setup.py sdist bdist_wheel会同时产出源码包与 wheel源码包阶段会触发上文所述的 man 页硬校验chmod -R arX dist确保归档文件可被公共读取最后用twine upload上传对应make install时pip3 install .的来源。11. 测试从 PyPI 安装/升级在干净环境执行pip3 install visidata或pipx install visidataREADME.md 中的官方推荐方式验证安装与vd命令可用构建并部署官网请另一位同事独立安装测试——换环境、换 Python 版本安装是发现依赖漏写、版本号错位等问题的最有效手段。八、打 git tag 与撰写 release notes12. 为发布提交创建 taggit tag v#.#.# git push --tagstag 名与版本号严格一致如v3.4它是后续git log $(git tag | tail -1)..HEAD生成下一版 CHANGELOG 的分界点。13. 撰写发布说明将 release notes 写入官网仓库的www/releases.md并加入index.md索引。需要说明的是www/releases.md与index.md属于 visidata.org 网站仓库当前镜像仓库中并不存在该目录全文搜索releases.md仅命中本清单自身发布者需在官网仓库中完成此步。15. 更新官网推送到网站仓库 master 以部署网站同时更新 manpage、并将官网的 man 页重定向redirect指向新版本的 manpage避免旧链接 404。16. 清理 issue 与 17. 发布公告逐条排查 issue 列表关闭已被本次发布解决的 issue并在关闭时引用对应版本号如#1234 fixed in v3.4便于用户追溯在 Patreon 发布 GitHub release notes 公告。九、同步其他发行渠道18. conda-forgeVisiData 在 conda-forge 的配方仓库为visidata-feedstock。步骤fork 该仓库打开recipe/meta.yaml更新 VisiData 的版本号与sha256从 PyPI 下载的 sdist 计算按需增删依赖——注意每个依赖都必须存在于 conda 生态纯 pip 包无法直接引用提交 PR在 PR 中评论conda-forge-admin, please rerender触发 conda-forge 自动重新渲染配方所有 CI 变绿后合并 PR。19. HomebrewVisiData 的 Homebrew 配方位于saulpw/homebrew-vd仓库打开Formula/visidata.rb把url更新为指向新版本visidata-ver.tar.gz的下载链接同步更新sha256与version并更新该仓库README.md中的版本号若是major 版本发布逐一检查各依赖是否有新版本有则同步更新其url与sha256在 macOS 上用brew install --build-from-source visidata实测配方出错则修复用brew audit --new-formula visidata做配方审计git add并提交配方。20. Debian官方 deb 包仓库中已内置 Debian 打包目录 dev/debian含changelog、control、copyright、manpages、rules、watch及source/、upstream/子目录打包流程为从 PyPI 下载visidata-ver.tar.gztar -xzmf visidata.tar.gz解压复制为 Debian 约定的 orig 包cp visidata.ver.tar.gz visidata_ver.orig.tar.gz进入visidata-ver/放入 salsa.debian.org 上anjakefala/visidata仓库中 debian 目录的内容更新 changelog版本号为$version-1如3.4-1dch -v new_version通常将 distribution 设为unstable、urgency 设为low并补一小段变更说明 6. 运行debuild按报错逐个修复 7. 若某模块导入失败需把对应模块加入构建依赖python3-modules 8. 返回上级目录 9. 若 debuild 未签名则对.changes文件签名debsign -k keycode visidata_ver.changes签名密钥由 anjakefala 保管 10. 上传到 Debian mentors 并联系 mentorMartin邮箱 debacledebian.orgdput mentors visidata_ver.changes将更新后的 debian 目录内容同步回本仓库的 dev/debian 与 salsa 上的debian-visidata仓库保证下一版发布有最新基线。21. deb-vd私有 deb 仓库saulpw/deb-vd是私有 apt 仓库进入该仓库目录运行reprepro includedeb sid new-vd.deb将新包收录进 sid 发行版更新其 README.md 中的版本号提交全部变更并推送到 master。十、写在最后清单使用建议编号并非严格顺序原清单中第 5 步出现两次、第 14 步排在 8 之前实际执行时应以测试 → 版本号 → 构建 → 合并 → 推送 → 分发的逻辑顺序为准尽早跑测试make test-all与 golden 测试dev/test.sh → tests/test-vdx.sh覆盖了绝大多数回归手动测试dev/checklists/manual-tests.md只应覆盖真实网络、终端交互等残余场景man 页是发布硬门槛sdist 在缺少 man 页时会直接失败setup.py建议发布前先make man确保 groff/soelim/preconv 环境可用多渠道同步以版本号 sha256为锚点conda、Homebrew、Debian 三个渠道的配方都以 sdist 的 sha256 校验发布物版本号、哈希、changelog 三者一致是避免下游装错版本的关键。赞分享数据分析CLI数据可视化【免费下载链接】visidataA terminal spreadsheet multitool for discovering and arranging data项目地址https://gitcode.com/gh_mirrors/vi/visidata点击查看免费下载相关推荐Headlamp 发布指南从版本号提升到多渠道分发的完整 Release 流程Headlamp 发布指南从版本号提升到多渠道分发的完整 Release 流程 导读 本文基于 Headlamp 官方发布指南 docs/developme云原生开发工具Genkit Python SDK 版本发布全流程实战指南从 RC 候选版到 PyPI 稳定发布Genkit Python SDK 版本发布全流程实战指南从 RC 候选版到 PyPI 稳定发布 导读 本文围绕 Genkit 开源仓库中 Python 发布人工智能大模型后端AI AgentRAG工具调用如何快速上手 Mermaid 在线编辑器免费创建流程图与分享链接的完整指南如何快速上手 Mermaid 在线编辑器免费创建流程图与分享链接的完整指南 Mermaid 在线编辑器是一款把纯文本变成专业图表的免费 Web 工具。打开浏览前端开发者工具数据可视化上一篇探索Webchat一款强大的在线聊天应用开发框架下一篇ghostnet_100.in1k模型压缩与量化极致轻量化方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

CodeQL 1.20 JavaScript 提取器能力升级:并行提取、E4X/Flow/Nullish 语法支持与 TypeScript 3.2 控制流改进
CodeQL 1.20 JavaScript 提取器能力升级:并行提取、E4X/Flow/Nullish 语法支持与 TypeScript 3.2 控制流改进

静态分析SAST应用安全漏洞扫描代码质量 【免费下载链接】codeql CodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security 项目地址: https://gitcode.com/gh_mirrors/co/code… · 2026/9/25 5:08:01

Senparc.Weixin 微信支付 V3 JSAPI 公众号网页支付实战:从商品页到 prepay_id 签名唤起
Senparc.Weixin 微信支付 V3 JSAPI 公众号网页支付实战:从商品页到 prepay_id 签名唤起

后端即时通讯金融科技 【免费下载链接】WeiXinMPSDK 微信全平台 .NET SDK, Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 10.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 … · 2026/9/25 5:08:01

ENVI 5.3安装教程:从环境检查到许可配置的完整实操指南
ENVI 5.3安装教程:从环境检查到许可配置的完整实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:07:55

微信Mac版技术架构与性能优化解析
微信Mac版技术架构与性能优化解析

1. 微信Mac版本的历史演变与技术架构解析微信作为国内主流即时通讯工具,其Mac客户端的发展历程折射出跨平台应用的技术演进。2012年推出的首个Mac版本采用基于WebKit的混合开发框架,通过封装网页版核心功能实现快速上线。2015年发布的2.0版本重构为原生C… · 2026/9/25 6:00:33

TEN Framework 的 PProf Go 應用程式:用 pprof 剖析 Go App 效能與堆積記憶體
TEN Framework 的 PProf Go 應用程式:用 pprof 剖析 Go App 效能與堆積記憶體

人工智能AI Agent多模态语音AI 应用 【免费下载链接】ten-framework Open-source framework for conversational voice AI agents 项目地址: https://gitcode.com/TEN-framework/ten-framework 点击查看 免费下载 本篇指南以 packages/example_apps/pprof_app_go 套… · 2026/9/25 6:00:33

plannotator PR 描述文本标注(Phase 1)实现剖析:复用既有注释引擎,把 prose 批注送入 Agent 反馈管道
plannotator PR 描述文本标注(Phase 1)实现剖析:复用既有注释引擎,把 prose 批注送入 Agent 反馈管道

【免费下载链接】plannotator Annotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click. 项目地址: https://gitcode.com/gh_mirrors/pl/plannotator 点击查看 免费下载 本文基于仓库中的… · 2026/9/25 6:00:33

Slot _a is unbootable真相:A/B分区机制状态提示而非系统损坏
Slot _a is unbootable真相:A/B分区机制状态提示而非系统损坏

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:00:33

如何免费部署Magnet Player这样的P2P流媒体站点到GitHub Pages?Jekyll+HTTPS避坑指南
如何免费部署Magnet Player这样的P2P流媒体站点到GitHub Pages?Jekyll+HTTPS避坑指南

如何免费部署Magnet Player这样的P2P流媒体站点到GitHub Pages?JekyllHTTPS避坑指南 【免费下载链接】magnet-player Stream torrents directly from your browser using WebTorrent. Paste a magnet link or torrent URL and watch videos instantly with peer-to-… · 2026/9/25 6:00:33

Excel连续数据选中原理与快捷键实战指南
Excel连续数据选中原理与快捷键实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:00:27

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码