Skip to content

Commit 81ff7b8

Browse files
gfraiteurclaude
andcommitted
Add IsConsolidated property; only consolidated products have UpstreamMerge snapshot dependencies
- Added IsConsolidated init-only property to DependencyDefinition - Set IsConsolidated = true for Metalama.Consolidated in V2025_1, V2026_0, V2026_1 - Changed TeamCity UpstreamMerge generation: normal products have no snapshot dependencies, only consolidated products depend on their dependencies' UpstreamMerge Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 25e0854 commit 81ff7b8

File tree

5 files changed

+210
-200
lines changed

5 files changed

+210
-200
lines changed

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/TeamCity/Generation/TeamCitySettingsFile.cs

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -209,25 +209,30 @@ private static TeamCityBuildConfiguration CreateUpstreamMergeConfiguration( Prod
209209
var claudeDockerSpec = product.DockerSpec?.WithClaudeDockerfile();
210210

211211
// Dependencies on UpstreamMerge of dependent repos (for cascading merge order).
212-
//
213-
// We intentionally have NO DebugBuild artifact dependencies here. The UpstreamMerge runs
214-
// BEFORE dependencies have been merged and deployed. If this repo depends on changes from
215-
// an upstream repo that haven't been published yet, the build would fail even with correctly
216-
// resolved conflicts. Claude only does git merge and conflict resolution - the PR build
217-
// runs AFTER the merge PR is created, when the dependency chain is complete.
218-
//
219-
// Include both ParametrizedDependencies and SourceDependencies, deduplicated by build type.
220-
var snapshotDependencies =
221-
product.ParametrizedDependencies
222-
.Where( d => d.Definition.GenerateSnapshotDependency && d.Definition.ProductFamily.UpstreamProductFamily != null )
223-
.Select( d => d.Definition )
224-
.Concat( product.SourceDependencies.Where( d => d.GenerateSnapshotDependency && d.ProductFamily.UpstreamProductFamily != null ) )
225-
.DistinctBy( d => d.CiConfiguration.UpstreamMergeBuildType )
226-
.Select( d => new TeamCitySnapshotDependency(
227-
d.CiConfiguration.UpstreamMergeBuildType,
228-
true,
229-
FailureAction: FailureAction.AddProblem ) )
230-
.OrderBy( d => d.ObjectId );
212+
// Only consolidated products have snapshot dependencies - normal products merge independently.
213+
IEnumerable<TeamCitySnapshotDependency> snapshotDependencies;
214+
215+
if ( product.DependencyDefinition.IsConsolidated )
216+
{
217+
// For consolidated products, include both ParametrizedDependencies and SourceDependencies,
218+
// deduplicated by build type.
219+
snapshotDependencies =
220+
product.ParametrizedDependencies
221+
.Where( d => d.Definition.GenerateSnapshotDependency && d.Definition.ProductFamily.UpstreamProductFamily != null )
222+
.Select( d => d.Definition )
223+
.Concat( product.SourceDependencies.Where( d => d.GenerateSnapshotDependency && d.ProductFamily.UpstreamProductFamily != null ) )
224+
.DistinctBy( d => d.CiConfiguration.UpstreamMergeBuildType )
225+
.Select( d => new TeamCitySnapshotDependency(
226+
d.CiConfiguration.UpstreamMergeBuildType,
227+
true,
228+
FailureAction: FailureAction.AddProblem ) )
229+
.OrderBy( d => d.ObjectId );
230+
}
231+
else
232+
{
233+
// Normal products have no snapshot dependencies - they merge independently.
234+
snapshotDependencies = [];
235+
}
231236

232237
var upstreamMergeConfiguration = new TeamCityBuildConfiguration(
233238
"UpstreamMerge",

src/PostSharp.Engineering.BuildTools/Dependencies/Definitions/MetalamaDependencies.V2025_1.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ public MetalamaDependencyDefinition(
219219
false,
220220
customRepositoryName: "Metalama.Consolidated" )
221221
{
222+
IsConsolidated = true,
222223
Dependencies =
223224
[
224225
DevelopmentDependencies.PostSharpEngineering,

src/PostSharp.Engineering.BuildTools/Dependencies/Definitions/MetalamaDependencies.V2026_0.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ public MetalamaDependencyDefinition(
199199
false,
200200
customRepositoryName: "Metalama.Consolidated" )
201201
{
202+
IsConsolidated = true,
202203
Dependencies =
203204
[
204205
DevelopmentDependencies.PostSharpEngineering,

src/PostSharp.Engineering.BuildTools/Dependencies/Definitions/MetalamaDependencies.V2026_1.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ public MetalamaDependencyDefinition(
202202
false,
203203
customRepositoryName: "Metalama.Consolidated" )
204204
{
205+
IsConsolidated = true,
205206
Dependencies =
206207
[
207208
DevelopmentDependencies.PostSharpEngineering,

0 commit comments

Comments
 (0)