Skip to content

finish-release-process.sh updates to preserve release/* branch integrity#544

Merged
swahtz merged 6 commits intoopenvdb:mainfrom
swahtz:finish_release_process_updates
Mar 20, 2026
Merged

finish-release-process.sh updates to preserve release/* branch integrity#544
swahtz merged 6 commits intoopenvdb:mainfrom
swahtz:finish_release_process_updates

Conversation

@swahtz
Copy link
Copy Markdown
Contributor

@swahtz swahtz commented Mar 13, 2026

After running the start-release.sh script, the main and release/v* branch will have conflicting commits that have changed the pyproject.toml version string. To preserve the version string on release/v* branch correctly matches the release/v* branch's name (and is accurate to the release if we go back to it for a patch version), this PR creates an adopt/v* branch to merge into main when finalizing the release instead of merging the release/v* branch directly. The adopt branch reconciles version differences, preserves the integrity of the release branch for future patch releases, and simplifies the merge back into main. The documentation, scripts, and tests have all been updated to reflect this new workflow.

Release process improvements:

  • Updated the release workflow to create an adopt/vX.Y branch from the release branch upon finishing the release process, set its version to match main, and merge it into main via a new PR. The original release branch remains untouched for patch releases. [1] [2] F5db4f32L5R7, [3]
  • Revised the release documentation (docs/release-process.md) to describe the new adopt branch model, including updated diagrams, procedures, and step-by-step instructions. (F5db4f32L5R7, [1] [2] [3] [4] [5] [6] [7] [8]

Script changes and enhancements:

  • Refactored devtools/finish-release.sh to implement the adopt branch workflow, including new functions for version reconciliation and branch consistency checks. Updated help text and argument descriptions. [1] [2] [3] [4] [5] [6] [7] [8]
  • Improved devtools/start-release.sh to check branch consistency and clarify the purpose of the draft release PR as a burndown tracker, not for direct merging. [1] [2] [3]

Testing updates:

  • Enhanced devtools/test-release-scripts.sh to validate the existence and correctness of the adopt branch, its version reconciliation, DCO sign-off, and clean merge into main. [1] [2]

[1] [2] [3] F5db4f32L5R7, [4]

swahtz added 2 commits March 13, 2026 12:50
…ciliation

- Updated the release process to include the creation of an adopt branch (`adopt/vX.Y`) that reconciles the version in `pyproject.toml` with the main branch before merging.
- Modified the script to close the original release PR and open a new PR from the adopt branch to main.
- Updated documentation to reflect changes in the release process and branch naming conventions.
- Added tests to ensure the adopt branch is created and merges cleanly into main.

This change improves the release workflow by maintaining the integrity of the release branch for future patch releases.

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Both start-release.sh and finish-release.sh now fetch the remote and verify that local branches match their upstream counterparts before proceeding. This prevents tagging or branching from a stale local checkout. finish-release.sh also checks for a clean working tree, matching the guard already present in start-release.sh.

The checks are skipped when --no-push is set (test environments without a real remote).

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the repository’s release workflow to avoid version-string conflicts between main and release/v* by introducing an intermediate adopt/v* branch that reconciles pyproject.toml before merging release fixes back into main.

Changes:

  • Introduces an adopt/vX.Y branch flow in finish-release.sh (create adopt branch, fix version to match main, open adopt PR).
  • Adds branch consistency checks in start-release.sh (verifies local main matches the configured remote before proceeding).
  • Updates release documentation and the end-to-end release script tests to reflect the new adopt-branch workflow.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
docs/release-process.md Documents the adopt-branch model and updated release-day procedure.
devtools/finish-release.sh Implements adopt-branch creation/version reconciliation + PR close/create behavior.
devtools/start-release.sh Adds remote/local branch consistency validation and clarifies PR purpose.
devtools/test-release-scripts.sh Extends tests to validate adopt branch creation, version reconciliation, and clean merge behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread devtools/test-release-scripts.sh
Comment thread devtools/finish-release.sh
swahtz and others added 2 commits March 13, 2026 14:08
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
@swahtz swahtz added documentation Improvements or additions to documentation project management labels Mar 13, 2026
@swahtz swahtz added this to the v0.4 milestone Mar 13, 2026
Copy link
Copy Markdown
Contributor

@harrism harrism left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One doc issue and one question. Otherwise this looks great, thanks.

Comment thread docs/release-process.md Outdated
main: ──A──B──C──D─────────────G──H──I── ...
\ /
release/v0.4: E──F──────────────T (tag v0.4.0)
main: ──A──B──C──D──────────────────G──H──I── ...
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This diagram shows release/v0.4 merging back into main, rather than adopt/v0.4. I believe the latter is merged, not the former, to reconcile the version conflict?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, I've fixed that up.

Comment thread docs/release-process.md
/path/to/fvdb-core/devtools/finish-release.sh 0.4.0
```

After each `finish-release.sh` run, merge the resulting `adopt/v*` PR
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we then delete the adopt/v* branch and keep the release/v* branch around for fixes? Or do we delete both and just rely on the tag?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should delete the adopt/v* branch and keep the release/v* branches around for any patch releases needed in the future.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've clarified that in the docs now.

swahtz added 2 commits March 19, 2026 13:14
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
swahtz added a commit that referenced this pull request Mar 19, 2026
## Summary

- Add `devtools/update-doc-versions.sh` -- a repo-agnostic script that
updates `fvdb_core_stable_version` in `docs/conf.py` and optionally
bumps the `fvdb-core>=` dependency floor in `pyproject.toml`
- Integrate `update-doc-versions.sh` into `start-release.sh` so docs are
updated on the release branch automatically (and flow back to main on
merge)
- Centralize the fvdb-core version in `docs/conf.py` via `rst_prolog`
substitutions so `installation.rst` uses a single-source version
variable instead of a hardcoded string
- Update install sections from PyTorch 2.8.0 / CUDA 12.8 to **PyTorch
2.10.0 / CUDA 12.8** and **CUDA 13.0** (matching published 0.4.0 wheels)
- Add 6 new tests to `test-release-scripts.sh` covering the new script
(help, dry-run, dependency floor update, conf.py update, version
validation, integration with start-release)

This prevents the version staleness that caused
openvdb/fvdb-reality-capture#273. The companion PR in
fvdb-reality-capture (openvdb/fvdb-reality-capture#275) applies the same
`conf.py` / `rst_prolog` pattern and fixes the immediate issue.

**Note:** This PR may need to be reconciled with #544 (adopt branch
workflow changes) depending on merge order.

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
Copy link
Copy Markdown
Contributor

@harrism harrism left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks for fixing.

@swahtz swahtz merged commit d35e948 into openvdb:main Mar 20, 2026
35 checks passed
@swahtz swahtz deleted the finish_release_process_updates branch March 20, 2026 00:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation project management

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants