brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
release-package-version发布 R 包新版本,包括版本号递增、NEWS.md 更新、git 标签创建、 GitHub release 创建及发布后开发版本设置。适用于包已准备好发布 新的补丁、次要或主要版本、CRAN 接受后创建对应的 GitHub release, 或在发布后立即设置开发版本递增的场景。
Independent GitHub snapshot · Automated classification · Original documentation governs
执行 R 包版本发布的完整周期。
submit-to-cran 技能)遵循语义化版本规范:
| 变更类型 | 版本递增 | 示例 |
|---|---|---|
| 仅缺陷修复 | Patch | 0.1.0 -> 0.1.1 |
| 新功能(向后兼容) | Minor | 0.1.0 -> 0.2.0 |
| 破坏性变更 | Major | 0.1.0 -> 1.0.0 |
预期结果: 根据自上次发布以来的变更性质,确定正确的递增类型(patch、minor 或 major)。
失败处理: 若不确定,查看自上次标签以来的 git log 并对每个变更分类。任何破坏性 API 变更都需要 major 递增。
usethis::use_version("minor") # or "patch" or "major"
此命令更新 DESCRIPTION 中的 Version 字段并在 NEWS.md 中添加标题。
预期结果: DESCRIPTION 版本已更新。NEWS.md 有该发布版本的新章节标题。
失败处理: 若 usethis::use_version() 不可用,手动更新 DESCRIPTION 中的 Version 字段,并在 NEWS.md 中添加 # packagename x.y.z 标题。
在新版本标题下填写发布说明:
# packagename 0.2.0
## New Features
- Added `new_function()` for processing data (#42)
- Support for custom themes in `plot_results()` (#45)
## Bug Fixes
- Fixed crash when input contains all NAs (#38)
- Corrected off-by-one error in `window_calc()` (#41)
## Minor Improvements
- Improved error messages for invalid input types
- Updated documentation examples
使用 issue/PR 编号以便追溯。
预期结果: NEWS.md 包含按类别组织的完整面向用户变更摘要,并附有 issue/PR 编号以便追溯。
失败处理: 若难以重建变更记录,使用 git log --oneline v<previous>..HEAD 列出自上次发布以来的所有提交,并对其分类。
devtools::check()
devtools::spell_check()
urlchecker::url_check()
预期结果: devtools::check() 返回 0 个错误、0 个警告、0 个注记。拼写检查和 URL 检查未发现问题。
失败处理: 发布前修复所有错误和警告。将误报词汇添加至 inst/WORDLIST 供拼写检查器使用。替换失效的 URL。
git add DESCRIPTION NEWS.md
git commit -m "Release packagename v0.2.0"
预期结果: 单个提交包含 DESCRIPTION 中的版本递增和更新后的 NEWS.md。
失败处理: 若存在其他未提交的变更,仅暂存 DESCRIPTION 和 NEWS.md。发布提交应只包含版本相关的变更。
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin main --tags
预期结果: 注解标签 v0.2.0 已创建并推送至远程。git tag -l 在本地显示该标签;git ls-remote --tags origin 在远程确认。
失败处理: 若推送失败,检查是否有写入权限。若标签已存在,使用 git show v0.2.0 确认它指向正确的提交。
gh release create v0.2.0 \
--title "packagename v0.2.0" \
--notes-file NEWS.md
或使用:
usethis::use_github_release()
预期结果: GitHub release 已创建,发布说明在仓库的 Releases 页面上可见。
失败处理: 若 gh release create 失败,确认 gh CLI 已通过身份验证(gh auth status)。若 usethis::use_github_release() 失败,在 GitHub 上手动创建 release。
发布后,切换至开发版本:
usethis::use_dev_version()
此命令将版本改为 0.2.0.9000 以表示开发中。
git add DESCRIPTION NEWS.md
git commit -m "Begin development for next version"
git push
预期结果: DESCRIPTION 版本现为 0.2.0.9000(开发版本)。NEWS.md 有开发版本的新标题。变更已推送至远程。
失败处理: 若 usethis::use_dev_version() 不可用,手动将 DESCRIPTION 中的版本改为 x.y.z.9000,并在 NEWS.md 中添加 # packagename (development version) 标题。
R CMD check 通过v0.2.0)git push 单独不推送标签,使用 --tags 或 git push origin v0.2.0.9000 版本提交至 CRANsubmit-to-cran — 版本发布后的 CRAN 提交create-github-release — 通用 GitHub release 创建setup-github-actions-ci — 发布版本时触发 pkgdown 重建build-pkgdown-site — 文档站点反映新版本