Recognize .buildvana/ as an alternative configuration file location - #316
Conversation
Closes Tenacom#311. The configuration file is now recognized in four candidate locations: buildvana.json[c] in the home directory root or in a .buildvana subdirectory. More than one existing configuration file is an error naming all offenders, generalizing the json/jsonc pairing rule. A configuration file inside .buildvana marks the directory containing .buildvana as home; a bare .buildvana directory is not a marker. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New test project Buildvana.Sdk.Tests copies the real Sdk.props into a stub SDK layout (empty stubs for the build-time generated files and for ImportConfiguration.props, which would break hermeticity) and evaluates it with Microsoft.Build.Evaluation via MSBuildLocator. Tests cover home discovery via every marker, nearest-wins selection, and the BVSDK1005 multiple-configuration-files check. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BREAKING CHANGE: the .buildvana-home marker file is no longer
recognized by home-directory discovery. It predates the configuration
file, and a buildvana.json containing an empty object ({}) does the
same job while being what one would naturally reach for. To migrate,
replace .buildvana-home with a buildvana.json file containing {}.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The section on locating the home directory still described the Git-only marker set from before configuration files existed, claimed a Git repository was required, and referenced a diagnostic code and a doc file that no longer exist. It now describes the nearest-marker algorithm and the current marker set, and the directory tree shows both configuration file locations. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
NotAccessedPositionalProperty.Global fires on Forwarded although it is read in the BuildPipeline constructor; confirmed a false positive after clearing ReSharper caches. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@claude please review this PR. |
|
Claude finished @rdeago's task in 2m 38s —— View job Claude finished @rdeago's task
ReviewWent through the full diff ( Correctness
Docs
CHANGELOG entries clearly describe both the new feature and the Minor, non-blocking observations
Test coverageBoth new test projects ( No blocking issues — this looks ready to merge from a correctness standpoint. |
|
Thanks for the review @claude. I think all your observations have been addressed (the third one by manual check - yes, both added dependencies are at their latest stable version). Please take another look. |
|
Claude finished @rdeago's task in 1m 4s —— View job Claude finished @rdeago's re-review
Re-reviewAll three observations from the first pass are resolved, and I re-diffed the core logic files (
No new issues found. This still looks ready to merge from a correctness standpoint. |
Proposed changes
Repos accumulating Buildvana files beyond the configuration file need a way to group them without cluttering the root, following the well-established
.github/.config/.claudeconvention.The configuration file is now recognized in four candidate locations:
buildvana.json[c]in the home directory root (as today) or in a.buildvanasubdirectory. More than one existing configuration file is an error naming all offenders — generalizing the existing json/jsonc pairing rule (BVSDK1005 on the SDK side). A configuration file inside.buildvanaacts as a home-directory marker for the directory containing.buildvana; a bare.buildvanadirectory is not a marker. Both discovery implementations (HomeDirectoryDiscoveryand theSdk.propsmirror) are updated, and the ComputeVersion cache fingerprint now covers the new locations.Beyond the issue's scope, by maintainer decision on the PR branch:
.buildvana-homemarker file is no longer recognized (breaking change). It predates the configuration file, and abuildvana.jsoncontaining{}does the same job while being what one would naturally reach for. Migration: replace.buildvana-homewith abuildvana.jsoncontaining{}.Buildvana.Sdk.Testsproject: an evaluation harness that copies the realSdk.propsinto a stub SDK layout and evaluates it withMicrosoft.Build.Evaluation, asserting on$(HomeDirectory)and evaluation errors — the first test coverage for the SDK-side discovery mirror.docs/DirectoryStructure.mdsynced with the current discovery rules (it still described the Git-only marker set and referenced a diagnostic code and doc file that no longer exist).CommandParameters.Forwarded(unrelated to these changes; it keptinspectcodefrom reporting zero).Checklist of related issues / discussions
Types of changes
This pull request introduces the following types of changes:
docsdirectory) update.gitattributes,.gitignore)Breaking changes
This pull request introduces breaking changes:
Checklist
docsdirectory) only:🤖 Generated with Claude Code