-
Notifications
You must be signed in to change notification settings - Fork 310
Conflict-Free Changelog Management System #1194
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
base: main
Are you sure you want to change the base?
Conversation
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.
Pull Request Overview
This PR implements a GitLab-inspired conflict-free changelog management system that replaces direct editing of CHANGELOG.md with individual YAML entry files. The system includes three PowerShell automation scripts, JSON schema validation, comprehensive documentation, and multi-server support.
Key changes:
- Automation scripts for creating, compiling, and syncing changelog entries across servers
- JSON schema for validating YAML changelog entries
- Documentation for contributors and system design
- Updates to CONTRIBUTING.md, AGENTS.md, and new-command.md to incorporate the new workflow
Reviewed Changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| eng/scripts/New-ChangelogEntry.ps1 | Interactive script to generate changelog YAML files with validation |
| eng/scripts/Compile-Changelog.ps1 | Compiles YAML entries into CHANGELOG.md with smart formatting and version handling |
| eng/scripts/Sync-VsCodeChangelog.ps1 | Syncs main changelog unreleased section to VS Code extension changelog |
| eng/schemas/changelog-entry.schema.json | JSON schema defining structure and validation rules for changelog entries |
| docs/changelog-entries.md | User-facing documentation for creating and managing changelog entries |
| docs/design/changelog-management-system.md | Technical design document with implementation details and rationale |
| servers/Azure.Mcp.Server/docs/new-command.md | Updated command creation checklist to include changelog entry creation |
| CONTRIBUTING.md | Updated contribution guidelines with changelog workflow instructions |
| AGENTS.md | Updated AI agent instructions to include changelog entry creation |
| PR-DESCRIPTION.md | Comprehensive PR description with features, usage, and testing details |
eng/scripts/Compile-Changelog.ps1
Outdated
| # Last line: add PR link here | ||
| # Line is already trimmed at the end, preserve leading indentation | ||
| $trimmedLine = $line.TrimStart() | ||
| $leadingSpaces = $line.Length - $trimmedLine.Length |
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.
Should we be converting tabs to spaces before indenting?
Should we be standardizing indent level width (2 spaces, 4 spaces) across entries?
… the Azure MCP Server. Added an optional filename parameter in New-ChangelogEntry.ps1. Updated schema. Updated documentation.
…er the .yml or .yaml extension
…pts/ChangeLog-Operations.ps1`
| ```yaml | ||
| changes: |
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.
Would it be possible to parse a terser format like:
changes:
"Features Added": |
Added new AI Foundry tools:
- foundry_agents_create: Create a new AI Foundry agent
- foundry_threads_create: Create a new AI Foundry Agent Thread
- foundry_threads_list: List all AI Foundry Agent Threads
"Bugs Fixed": Fixed issue with subsection title casing
"Other Changes":
"Dependency Updates": Updated ModelContextProtocol.AspNetCore to version 0.4.0-preview.3There 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.
Probably? Although I don't particularly like the idea of having strings that need to be wrapped in double quotes as YAML keys.
What does this PR do?
This PR implements a GitLab-inspired changelog management system that eliminates merge conflicts on
CHANGELOG.mdby using individual YAML files for changelog entries. The system includes automation scripts, multi-server support, and comprehensive documentation.Addresses: #646
What's Changed
Core System:
Scripts Added:
eng/scripts/New-ChangelogEntry.ps1- Interactive generator for creating changelog entrieseng/scripts/Compile-Changelog.ps1- Compiles YAML files into CHANGELOG.mdeng/scripts/Sync-VsCodeChangelog.ps1- Syncs main CHANGELOG to VS Code extension CHANGELOGDocumentation:
docs/changelog-entries.md- User guide for contributorsdocs/design/changelog-management-system.md- Design document and implementation detailseng/schemas/changelog-entry.schema.json- JSON schema for validationInfrastructure:
servers/<server-name>/changelog-entries/folder for each serverCHANGELOG.mdfiles for each serverCONTRIBUTING.md,AGENTS.md, andnew-command.mdwith changelog workflowKey Features
1. No More Merge Conflicts
Contributors create individual YAML files with a unique name instead of editing
CHANGELOG.mddirectly:2. Multi-Server Support
All scripts support multiple MCP servers
3. Smart Compilation
4. VS Code Extension Integration
Automatically syncs main CHANGELOG to VS Code extension CHANGELOG with section mapping:
Usage Examples
For Contributors:
For Release Managers:
Technical Details
Filename convention: Unix timestamp in milliseconds (e.g.,
1731260400123.yml)Version handling: Supports both
## 2.0.0 (Unreleased)and## [0.0.1] - 2025-09-16formatsValidation: All entries validated against JSON schema during creation and compilation
Benefits
Testing
Tested with:
Migration Notes
Existing workflow remains valid during transition:
Related Documentation
docs/changelog-entries.mdfor contributor guidedocs/design/changelog-management-system.mdfor design detailsGitHub issue number?
Pre-merge Checklist
servers/Azure.Mcp.Server/CHANGELOG.mdand/orservers/Fabric.Mcp.Server/CHANGELOG.mdfor product changes (features, bug fixes, UI/UX, updated dependencies)servers/Azure.Mcp.Server/README.mdand/orservers/Fabric.Mcp.Server/README.mddocumentationeng/scripts/Process-PackageReadMe.ps1. See Package README/servers/Azure.Mcp.Server/docs/azmcp-commands.mdand/or/docs/fabric-commands.md.\eng\scripts\Update-AzCommandsMetadata.ps1to update tool metadata in azmcp-commands.md (required for CI)ToolDescriptionEvaluatorand obtained a score of0.4or more and a top 3 ranking for all related test promptsconsolidated-tools.json/servers/Azure.Mcp.Server/docs/e2eTestPrompts.mdcrypto mining, spam, data exfiltration, etc.)/azp run mcp - pullrequest - liveto run Live Test Pipeline