-
-
Notifications
You must be signed in to change notification settings - Fork 177
Add Central Package Management (CPM) support to nbgv install command #1208
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: AArnott <[email protected]>
This comment has been minimized.
This comment has been minimized.
KalleOlaviNiemitalo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if this could output
<ItemGroup>
<PackageReference Include="Nerdbank.GitVersioning" Condition="!Exists('packages.config')">
<PrivateAssets>all</PrivateAssets>
<Version Condition="$(ManagePackageVersionsCentrally) != 'true'">3.7.115</Version>
</PackageReference>
</ItemGroup>and have that work in both cases?
Although I suppose the 3.7.115 version number in the file would seem somewhat misleading in the CPM-enabled case where it would not take effect but would attract developers to update it when a new version of NB.GV is released.
| if (isCpmEnabled) | ||
| { | ||
| // Remove Version metadata if CPM is enabled | ||
| ProjectMetadataElement versionMetadata = item.Metadata.FirstOrDefault(m => m.Name == VersionMetadataName); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aren't metadata names in MSBuild case-insensitive?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True. I didn't catch that. I'll send a follow-up PR to fix. Thanks.
| private static bool IsCentralPackageManagementEnabled(string path) | ||
| { | ||
| string directoryPackagesPropsPath = Path.Combine(path, "Directory.Packages.props"); | ||
| if (!File.Exists(directoryPackagesPropsPath)) | ||
| { | ||
| return false; | ||
| } | ||
|
|
||
| return true; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The existence of Directory.Packages.props does not necessarily mean that central package management is enabled. The ManagePackageVersionsCentrally property might be set in neither Directory.Packages.props nor Directory.Build.props.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the property must be set. And Copilot had originally included that check, but it was only looking in Directory.Packages.props for it, which as you say, would be an incomplete check.
Since no repo should have Directory.Packages.props without setting this property to true as well, I'm ignoring the property to keep it simple.
I agree with your concern: putting the version number in both places with a condition on it would be misleading and add to the maintenance burden without any gain. I'm not going to do that. |
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> [](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> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The
nbgv installcommand now recognizes and supports Central Package Management (CPM). Previously, the tool only worked with traditional PackageReference management and would always add version information directly to Directory.Build.props.Changes Made
ManagePackageVersionsCentrally=truePackageVersionto Directory.Packages.props andPackageReferencewithout Version to Directory.Build.propsPackageReferenceincluding Version in Directory.Build.propsExample Usage
With CPM Enabled
Without CPM (Traditional)
Testing
All scenarios have been thoroughly tested:
The implementation is backward-compatible and makes minimal changes to the codebase (106 lines added, 7 removed in a single file).
Fixes #1031.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.