Skip to content

feat: intelligent multi-repo release notes backfill tool #20

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

Merged
merged 1 commit into from
Jun 28, 2025

Conversation

fpelliccioni
Copy link
Contributor

🚀 Multi-Repository Release Notes Backfill

This PR introduces an intelligent script to automatically backfill missing release notes from multiple GitHub repositories, solving the complex versioning synchronization problem in the Knuth multi-module architecture.

🎯 Problem Solved

  • Missing release notes: Versions 0.47.0 → 0.58.0 were not documented in release-notes.md
  • Multi-repo complexity: Changes scattered across node-exe, node, and c-api repositories
  • Version mismatch: C-API uses different versioning scheme (0.58.0 → 0.67.0)
  • Empty releases: Some releases have no notes due to changes being in sub-modules

🧠 Intelligent Solution

The backfill_release_notes.sh script implements:

📡 Multi-Repository Aggregation

  • Fetches releases from k-nuth/node-exe, k-nuth/node, k-nuth/c-api
  • Uses node-exe as primary version reference (0.47.0 → 0.58.0)
  • Handles different versioning schemes automatically

📅 Date-Based Synchronization

  • Groups releases by date proximity (±1 day tolerance)
  • Finds contemporary releases across repositories
  • Resolves the version mismatch problem intelligently

🔄 Smart Content Merging

  • Combines release notes from all repositories per version
  • Organizes by: Node Executable, C++ Library, C API
  • Handles empty releases by pulling content from related repos
  • Cleans up auto-generated GitHub content

🛡️ Safe Operation

  • Creates automatic backup before any changes
  • Interactive review and confirmation
  • Preserves existing format and structure
  • Provides detailed logging and progress feedback

📁 Files Added

  • scripts/backfill_release_notes.sh: Complete backfill automation tool

🚀 Usage

# Run the backfill process
./scripts/backfill_release_notes.sh

# The script will:
# 1. Backup existing release-notes.md
# 2. Fetch all releases from the 3 main repos
# 3. Group by date and merge content
# 4. Update the local file
# 5. Show preview and ask for confirmation
# 6. Commit changes automatically

✅ Expected Outcome

After running this script, doc/release-notes/release-notes.md will contain:

  • All missing versions from 0.47.0 to 0.58.0
  • Properly merged content from all repositories
  • Consistent formatting with existing entries
  • Complete historical record of all releases

🔮 Future Benefits

This tool can be used anytime to:

  • Backfill missing release notes
  • Synchronize multi-repo documentation
  • Maintain historical accuracy
  • Handle complex versioning scenarios

The script is designed to be reusable and handles edge cases gracefully, making it a valuable tool for maintaining comprehensive release documentation in multi-module projects.

- Added backfill_release_notes.sh to recover missing release notes from GitHub
- Handles multi-repository versioning complexity (node-exe, node, c-api)
- Synchronizes releases by date proximity (±1 day tolerance)
- Automatically merges release notes from different repos for each version
- Groups by node-exe version as primary reference (0.47.0 → 0.58.0)
- Handles different versioning schemes between repositories
- Creates backup and provides interactive review before committing changes
- Solves the problem of missing release notes due to multi-module architecture
@fpelliccioni fpelliccioni self-assigned this Jun 28, 2025
@fpelliccioni fpelliccioni merged commit f04d351 into master Jun 28, 2025
9 checks passed
@fpelliccioni fpelliccioni deleted the feat/backfill-release-notes-multi-repo branch June 28, 2025 11:47
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.

1 participant