Skip to content

simplify release branch to just 'release'#417

Merged
heyitsaamir merged 1 commit into
mainfrom
aamirj/release-branch-pattern
Apr 30, 2026
Merged

simplify release branch to just 'release'#417
heyitsaamir merged 1 commit into
mainfrom
aamirj/release-branch-pattern

Conversation

@heyitsaamir
Copy link
Copy Markdown
Collaborator

Summary

  • updates publicReleaseRefSpec in version.json to match release instead of release/v*
  • removes alpha branch references from RELEASE.md — we're going straight main → release now
  • updates RELEASE.md examples to reflect 2.0 stable

Test plan

  • nbgv get-version on a release branch produces clean version

- update publicReleaseRefSpec to match ^refs/heads/release$
- update RELEASE.md to reflect new branch strategy (no more alpha branches)
Copilot AI review requested due to automatic review settings April 30, 2026 22:35
@heyitsaamir heyitsaamir merged commit 4dd4cbf into main Apr 30, 2026
4 checks passed
@heyitsaamir heyitsaamir deleted the aamirj/release-branch-pattern branch April 30, 2026 22:40
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

Note

Copilot was unable to run its full agentic suite in this review.

Simplifies the release workflow by moving from versioned release/v* branches (and alpha branches) to a single release branch, updating Nerdbank.GitVersioning configuration and release documentation accordingly.

Changes:

  • Update publicReleaseRefSpec to treat only refs/heads/release as a public release branch.
  • Remove alpha-branch workflow references and update release flow docs to main → release.
  • Refresh examples in RELEASE.md to reflect the 2.0 stable line and current dev version.

Reviewed changes

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

File Description
version.json Adjusts NBGV public release branch matching to a single release branch.
RELEASE.md Updates the documented branching/versioning workflow and examples to match the simplified release strategy.

Comment thread RELEASE.md
| `main` | `2.0.0.dev1`, `2.0.0.dev2`, ... | No |
| `alpha/v2.0.0` | `2.0.0a10`, `2.0.0a11`, ... | Yes |
| `release/v2.0.0` | `2.0.0` | Yes |
| `main` | `2.0.1.dev1`, `2.0.1.dev2`, ... | No |
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The documented dev version examples use the PEP440-style 2.0.1.devN, but the shown version.json value is 2.0.1-dev.{height} (dash). Unless there’s a known translation step in your packaging pipeline, this is inconsistent and can mislead when validating with nbgv get-version. Align the examples with the actual versions produced in this repo (either update the examples to match NBGV output for -dev.{height}, or change the configured version string to the format you intend to document).

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
```json
{
"version": "2.0.0-dev.{height}",
"version": "2.0.1-dev.{height}",
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The documented dev version examples use the PEP440-style 2.0.1.devN, but the shown version.json value is 2.0.1-dev.{height} (dash). Unless there’s a known translation step in your packaging pipeline, this is inconsistent and can mislead when validating with nbgv get-version. Align the examples with the actual versions produced in this repo (either update the examples to match NBGV output for -dev.{height}, or change the configured version string to the format you intend to document).

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
```

Builds on `alpha/v2.0.0` produce alpha versions like `2.0.0a10`, `2.0.0a11`, etc. These are published.
Builds on `main` produce dev versions like `2.0.1.dev1`, `2.0.1.dev2`, etc. These are not published.
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The documented dev version examples use the PEP440-style 2.0.1.devN, but the shown version.json value is 2.0.1-dev.{height} (dash). Unless there’s a known translation step in your packaging pipeline, this is inconsistent and can mislead when validating with nbgv get-version. Align the examples with the actual versions produced in this repo (either update the examples to match NBGV output for -dev.{height}, or change the configured version string to the format you intend to document).

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
| `release` | `microsoft_teams_apps-2.0.0.tar.gz` |

> **Note:** Running the pipeline on a branch not in `publicReleaseRefSpec` (e.g., a feature branch) produces versions with the commit hash appended, like `2.0.0a11.dev5+g1a2b3c4`. This is expected and useful for testing.
> **Note:** Running the pipeline on a branch not in `publicReleaseRefSpec` (e.g., a feature branch) produces versions with the commit hash appended, like `2.0.1.dev5+g1a2b3c4`. This is expected and useful for testing.
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The documented dev version examples use the PEP440-style 2.0.1.devN, but the shown version.json value is 2.0.1-dev.{height} (dash). Unless there’s a known translation step in your packaging pipeline, this is inconsistent and can mislead when validating with nbgv get-version. Align the examples with the actual versions produced in this repo (either update the examples to match NBGV output for -dev.{height}, or change the configured version string to the format you intend to document).

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
@@ -41,38 +38,27 @@ Versions are managed by **Nerdbank.GitVersioning** via [version.json](version.js

Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The doc now relies on publicReleaseRefSpec behavior (it’s referenced explicitly in the note), but the embedded version.json example omits publicReleaseRefSpec entirely. Since this PR changes that setting in a way that affects what becomes “public,” it would be clearer to either include publicReleaseRefSpec in the example JSON or add a short explanation describing that only refs/heads/release is considered public after this change.

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
Comment on lines +27 to +30
Development happens on `main`. When ready to release, create a `release` branch from `main`:

```
main → alpha/v2.0.0 → release/v2.0.0
main → release
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

Moving to a single long-lived release branch has an operational tradeoff: it makes it harder to concurrently service multiple stable lines (e.g., hotfix 2.0.x after starting 2.1.x), because only one branch name matches publicReleaseRefSpec. Consider documenting an explicit policy for patch/hotfix releases (e.g., cut a maintenance branch and temporarily widen publicReleaseRefSpec, or use tags + a controlled process to publish from release), so future releases don’t require ad-hoc branching/publishing decisions.

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
To produce a stable release (e.g., `2.0.0` without any suffix):

1. Create a `release/v2.0.0` branch from `alpha/v2.0.0`
1. Create a `release` branch from `main`
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

Moving to a single long-lived release branch has an operational tradeoff: it makes it harder to concurrently service multiple stable lines (e.g., hotfix 2.0.x after starting 2.1.x), because only one branch name matches publicReleaseRefSpec. Consider documenting an explicit policy for patch/hotfix releases (e.g., cut a maintenance branch and temporarily widen publicReleaseRefSpec, or use tags + a controlled process to publish from release), so future releases don’t require ad-hoc branching/publishing decisions.

Copilot uses AI. Check for mistakes.
Comment thread RELEASE.md
1. Go to **Pipelines** > **teams.py** in ADO
2. Click **Run pipeline**
3. Select the branch to build from (e.g., `alpha/v2.0.0`)
3. Select the `release` branch
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

Moving to a single long-lived release branch has an operational tradeoff: it makes it harder to concurrently service multiple stable lines (e.g., hotfix 2.0.x after starting 2.1.x), because only one branch name matches publicReleaseRefSpec. Consider documenting an explicit policy for patch/hotfix releases (e.g., cut a maintenance branch and temporarily widen publicReleaseRefSpec, or use tags + a controlled process to publish from release), so future releases don’t require ad-hoc branching/publishing decisions.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants