Skip to content

Add versionHeightOffsetAppliesTo property to version.json#1279

Merged
AArnott merged 7 commits intomainfrom
copilot/add-version-height-offset-property
Oct 9, 2025
Merged

Add versionHeightOffsetAppliesTo property to version.json#1279
AArnott merged 7 commits intomainfrom
copilot/add-version-height-offset-property

Conversation

Copy link
Contributor

Copilot AI commented Oct 9, 2025

Implementation Plan for versionHeightOffsetAppliesTo

  • Add versionHeightOffsetAppliesTo property to VersionOptions class
  • Add backing field and JSON property for the new field
  • Update copy constructor to copy the new field
  • Update equality comparer to include the new field
  • Add property to version.schema.json for JSON schema validation
  • Implement logic to check if offset applies to current version
  • Update ReleaseManager to clear both properties when version resets
  • Add serialization rule for the new property
  • Add unit tests for the new functionality
  • Update documentation in versionJson.md
  • Test the implementation end-to-end with a real repository
  • Fix version height offset logic to work correctly in all contexts
  • Address code review feedback
  • Add documentation callout for version inheritance use case

Summary

This implementation adds the versionHeightOffsetAppliesTo property to version.json, which allows version height offsets to automatically reset when the version changes. This eliminates the need to manually remove offset properties from all version.json files in a repository when the version is bumped.

The documentation now includes a callout highlighting the particularly useful scenario where a version.json file uses "inherit": true to get the version from a parent file, making offset management even more seamless in multi-file configurations.

All tests pass and the implementation is ready for review.

Original prompt

This section details on the original issue you should resolve

<issue_title>Add versionHeightOffsetAppliesTo property to version.json</issue_title>
<issue_description>The versionHeightOffset property in version.json is typically a bandaid to a problem that only applies till the version property in that file changes, such that the version height would reset to 0 anyway. But it often happens that people miss the opportunity to reset that offset to 0 in the exact same commit as the one that bumps the version property, such that the offset repeatedly persists longer than it should.

Let's add a versionHeightOffsetAppliesTo property that takes a version (like the version property itself) and when the version property changes such that NB.GV would reset the version height, it will consider the new applies-to property to be a mismatch, and therefore will disregard the versionHeightOffset property from then on, until that property is removed or the applies to property is updated.

At that point, removing versionHeightOffset and versionHeightOffsetAppliesTo properties from a version.json file that are no longer needed or applicable will be safe to do in any commit, as it won't impact the computed version height to do so.

This will allow version height offsets to implicitly reset as intended, without having to remember to remove versionHeightOffset from all version-inheriting version.json files in the repo in the same commit.

The nbgv tool's set-version command should also be updated to remove these two properties when they are deemed to not be needed any more, per the above rules.</issue_description>

Comments on the Issue (you are @copilot in this section)

Fixes #1278


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@AArnott
Copy link
Collaborator

AArnott commented Oct 9, 2025

@copilot We should be sure to update the json schema file and update the markdown documents to describe this new property alongside versionHeightOffset.

Copilot AI and others added 5 commits October 9, 2025 16:38
Co-authored-by: AArnott <3548+AArnott@users.noreply.github.com>
Co-authored-by: AArnott <3548+AArnott@users.noreply.github.com>
Co-authored-by: AArnott <3548+AArnott@users.noreply.github.com>
…perty

Co-authored-by: AArnott <3548+AArnott@users.noreply.github.com>
Co-authored-by: AArnott <3548+AArnott@users.noreply.github.com>
Copilot AI changed the title [WIP] Add versionHeightOffsetAppliesTo property to version.json Add versionHeightOffsetAppliesTo property to version.json Oct 9, 2025
Copilot AI requested a review from AArnott October 9, 2025 17:12
@AArnott AArnott marked this pull request as ready for review October 9, 2025 23:05
Co-authored-by: AArnott <3548+AArnott@users.noreply.github.com>
microsoft-github-policy-service bot pushed a commit to Azure/bicep that referenced this pull request Jan 12, 2026
Updated
[Nerdbank.GitVersioning](https://github.com/dotnet/Nerdbank.GitVersioning)
from 3.7.115 to 3.9.50.

<details>
<summary>Release notes</summary>

_Sourced from [Nerdbank.GitVersioning's
releases](https://github.com/dotnet/Nerdbank.GitVersioning/releases)._

## 3.9.50

## What's Changed
* Add `versionHeightOffsetAppliesTo` property to version.json by
@​Copilot in dotnet/Nerdbank.GitVersioning#1279
* Fix `nbgv prepare-release` command to honor inheriting version.json
files by @​AArnott in
dotnet/Nerdbank.GitVersioning#1281
* Automatically disable git engine for Dependabot environments by
@​Copilot in dotnet/Nerdbank.GitVersioning#1284
* Add --what-if switch to nbgv tag command to preview tag names by
@​Copilot in dotnet/Nerdbank.GitVersioning#1287
* Auto-disable git engine for GitHub Copilot environments by @​Copilot
in dotnet/Nerdbank.GitVersioning#1291
* Allow uppercase letters in pre-release version identifiers by
@​Copilot in dotnet/Nerdbank.GitVersioning#1293

## New Contributors
* @​micheloliveira-com made their first contribution in
dotnet/Nerdbank.GitVersioning#1277

**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.8.118...v3.9.50

## 3.9.37-alpha

## What's Changed
* Auto-disable git engine for GitHub Copilot environments by @​Copilot
in dotnet/Nerdbank.GitVersioning#1291


**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.9.32-alpha...v3.9.37-alpha

## 3.9.32-alpha

## What's Changed

* Automatically disable git engine for Dependabot environments by
@​Copilot in dotnet/Nerdbank.GitVersioning#1284
* Add --what-if switch to nbgv tag command to preview tag names by
@​Copilot in dotnet/Nerdbank.GitVersioning#1287

**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.9.17-alpha...v3.9.32-alpha

## 3.9.17-alpha

## What's Changed
* Fix `nbgv prepare-release` command to honor inheriting version.json
files by @​AArnott in
dotnet/Nerdbank.GitVersioning#1281


**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.9.15-alpha...v3.9.17-alpha

## 3.9.15-alpha

## What's Changed

* Add `versionHeightOffsetAppliesTo` property to version.json by
@​Copilot in dotnet/Nerdbank.GitVersioning#1279

## New Contributors
* @​micheloliveira-com made their first contribution in
dotnet/Nerdbank.GitVersioning#1277

**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.8.118...v3.9.15-alpha

## 3.8.118

## Fixes

* Don't try to disable CA2243 warnings in the generated version info
files for F# by @​Numpsy in
dotnet/Nerdbank.GitVersioning#1174
* Catch a more general JsonException. by @​ANGEL-OF-DEV in
dotnet/Nerdbank.GitVersioning#1191
* Retarget links to migrated docs by @​bencemali in
dotnet/Nerdbank.GitVersioning#1193
* Check MSBuild items with case insensitivity by @​AArnott in
dotnet/Nerdbank.GitVersioning#1213
* Fix inconsistent CLI output format for GitCommitDate by @​Copilot in
dotnet/Nerdbank.GitVersioning#1246
* Fix version height computed as 0 when project path has non-canonical
casing by @​Copilot in
dotnet/Nerdbank.GitVersioning#1244
* When generating the GitCommitDate field in the AssemblyInfo for F#, d…
by @​Numpsy in
dotnet/Nerdbank.GitVersioning#1253
* Only do Android version check on applications by @​dotMorten in
dotnet/Nerdbank.GitVersioning#1256
* Fix `nbgv set-version` to write to the best version.json file in scope
by @​AArnott in
dotnet/Nerdbank.GitVersioning#1264

## Enhancements

* Add msbuild-provided prerelease identifiers by @​AArnott in
dotnet/Nerdbank.GitVersioning#1153
* Add support for stamping version on server.json for MCP servers with
0.0.0-placeholder replacement by @​Copilot in
dotnet/Nerdbank.GitVersioning#1270 and by
@​AArnott in dotnet/Nerdbank.GitVersioning#1271
* Add option to set / skip CloudBuildNumber by @​MattKotsenas in
dotnet/Nerdbank.GitVersioning#1190
* Add Central Package Management (CPM) support to nbgv install command
by @​Copilot in
dotnet/Nerdbank.GitVersioning#1208
* Add --public-release argument to nbgv get-version command by @​Copilot
in dotnet/Nerdbank.GitVersioning#1245
* Invoke PrivateP2PCaching.proj fewer times by @​AArnott in
dotnet/Nerdbank.GitVersioning#1263

## Other changes

* Update dependency Cake.Core to v5 by @​renovate[bot] in
dotnet/Nerdbank.GitVersioning#1183

## New Contributors
* @​ANGEL-OF-DEV made their first contribution in
dotnet/Nerdbank.GitVersioning#1191
* @​bencemali made their first contribution in
dotnet/Nerdbank.GitVersioning#1193
* @​Copilot made their first contribution in
dotnet/Nerdbank.GitVersioning#1208
* @​dotMorten made their first contribution in
dotnet/Nerdbank.GitVersioning#1256
* @​emmanuel-ferdman made their first contribution in
dotnet/Nerdbank.GitVersioning#1145

**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.7.115...v3.8.118

## 3.8.106-alpha

## What's Changed

### Enhancements

* Add option to set / skip CloudBuildNumber by @​MattKotsenas in
dotnet/Nerdbank.GitVersioning#1190
* Add Central Package Management (CPM) support to nbgv install command
by @​Copilot in
dotnet/Nerdbank.GitVersioning#1208
* Add --public-release argument to nbgv get-version command by @​Copilot
in dotnet/Nerdbank.GitVersioning#1245
* Invoke PrivateP2PCaching.proj fewer times by @​AArnott in
dotnet/Nerdbank.GitVersioning#1263

### Fixes

* Catch a more general JsonException. by @​ANGEL-OF-DEV in
dotnet/Nerdbank.GitVersioning#1191
* Retarget links to migrated docs by @​bencemali in
dotnet/Nerdbank.GitVersioning#1193
* Check MSBuild items with case insensitivity by @​AArnott in
dotnet/Nerdbank.GitVersioning#1213
* Fix inconsistent CLI output format for GitCommitDate by @​Copilot in
dotnet/Nerdbank.GitVersioning#1246
* Fix version height computed as 0 when project path has non-canonical
casing by @​Copilot in
dotnet/Nerdbank.GitVersioning#1244
* When generating the GitCommitDate field in the AssemblyInfo for F#, d…
by @​Numpsy in
dotnet/Nerdbank.GitVersioning#1253
* Only do Android version check on applications by @​dotMorten in
dotnet/Nerdbank.GitVersioning#1256
* Fix `nbgv set-version` to write to the best version.json file in scope
by @​AArnott in
dotnet/Nerdbank.GitVersioning#1264

### Other changes

* Update dependency Cake.Core to v5 by @​renovate[bot] in
dotnet/Nerdbank.GitVersioning#1183

## New Contributors
* @​ANGEL-OF-DEV made their first contribution in
dotnet/Nerdbank.GitVersioning#1191
* @​bencemali made their first contribution in
dotnet/Nerdbank.GitVersioning#1193
* @​Copilot made their first contribution in
dotnet/Nerdbank.GitVersioning#1208
* @​dotMorten made their first contribution in
dotnet/Nerdbank.GitVersioning#1256

**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.8.38-alpha...v3.8.106-alpha

## 3.8.38-alpha

## Fixes

* Don't try to disable CA2243 warnings in the generated version info
files for F# by @​Numpsy in
dotnet/Nerdbank.GitVersioning#1174

## Enhancements

* Add msbuild-provided prerelease identifiers by @​AArnott in
dotnet/Nerdbank.GitVersioning#1153

## New Contributors
* @​emmanuel-ferdman made their first contribution in
dotnet/Nerdbank.GitVersioning#1145

**Full Changelog**:
dotnet/Nerdbank.GitVersioning@v3.7.115...v3.8.38-alpha

Commits viewable in [compare
view](dotnet/Nerdbank.GitVersioning@v3.7.115...v3.9.50).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Nerdbank.GitVersioning&package-manager=nuget&previous-version=3.7.115&new-version=3.9.50)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
###### Microsoft Reviewers: [Open in
CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/Azure/bicep/pull/18819)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

Add versionHeightOffsetAppliesTo property to version.json

2 participants