Skip to main content

azsdk-common-patch-mergeback

Prepare a merge-back PR that brings patch-release version, CHANGELOG, and pom.xml updates from a `release/patch/YYYYMMDD` branch back into `main`. **WORKFLOW SKILL**. USE FOR: "merge-back PR", "merge back patches", "patch release merge-back", "bring patch releases into main", "reconcile release/patch branch with main". DO NOT USE FOR: triggering SDK releases, incrementing versions for a new patch, general SDK code generation. INVOKES: eng/versioning/update_versions.py.

Source facts

Repository
Azure/azure-sdk-for-java
Last source activity
July 15, 2026 at 20:25
Detected SKILL.md language
English
Stars
2,567
Forks
2,181

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
3 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
azsdk-common-patch-mergeback
license
MIT
metadata
{"version":"1.0.0","distribution":"shared"}
description
Prepare a merge-back PR that brings patch-release version, CHANGELOG, and pom.xml updates from a `release/patch/YYYYMMDD` branch back into `main`. **WORKFLOW SKILL**. USE FOR: "merge-back PR", "merge back patches", "patch release merge-back", "bring patch releases into main", "reconcile release/patch branch with main". DO NOT USE FOR: triggering SDK releases, incrementing versions for a new patch, general SDK code generation. INVOKES: eng/versioning/update_versions.py.
compatibility
Requires a checked-out azure-sdk-for-java repo with git access to the release/patch branch and Python installed for eng/versioning/update_versions.py.
# Patch Release Merge-back Prepare a PR that merges the version, CHANGELOG, and downstream `pom.xml` updates produced by a patch release (on a `release/patch/YYYYMMDD` branch) back into `main`. Patches revert `CHANGELOG.md` and version files to the last stable release, so a naive merge creates many conflicts. This skill encodes how to resolve each file type correctly. ## Triggers WHEN: "merge-back PR", "merge back patches", "patch release merge-back", "bring patch releases into main", "reconcile the patch branch" DO NOT USE FOR: triggering an SDK release, incrementing versions for a new patch cycle, code generation. ## Inputs (variables) Two values drive the whole workflow. Both come from the **"Increment versions for patch releases"** PR (opened by `azure-sdk-automation[bot]`) that targets the patch branch: | Variable | How to determine it | Current value | | ---------------- | ------------------------------------------------------------------------------- | ----------------------- | | `RELEASE_BRANCH` | The branch the "Increment versions" PR targets: `release/patch/YYYYMMDD`. | `release/patch/20260701` | | `PATCH_DATE` | Derived from the branch name `YYYYMMDD` → `YYYY-MM-DD`. Used in CHANGELOG entries. | `2026-07-01` | If either value is ambiguous, ask the user to confirm before proceeding. ## Critical Rules (read first) - **Only the last two commits** of `RELEASE_BRANCH` carry the updates to bring back. Diff against `RELEASE_BRANCH~2` to scope the change set. - **Never edit `pom.xml` by hand.** It is regenerated by `eng/versioning/update_versions.py` **after** `version_client.txt` is correct. - **Do not touch `README.md` files.** Run the version script with `--skip-readme` so READMEs are left unchanged (README updates are handled separately). - **`version_client.txt`:** update only the `dependency-version` of SDK libraries that changed on the release branch; **always keep the `current-version` from `main`.** Never reset beta versions to `beta.1`. - **`CHANGELOG.md`:** keep the `PATCH_DATE` entry from the release branch; every other line must match `main`. Do not invent or edit any other CHANGELOG content. - Base the merge-back branch on **`main`**, not on the release branch. ## Workflow 1. **Confirm inputs** — Establish `RELEASE_BRANCH` and `PATCH_DATE` (see table above). Fetch the branch: `git fetch origin RELEASE_BRANCH`. 2. **Create the working branch from `main`:** `git checkout main && git pull` then `git checkout -b copilot/merge-back-release-patch-YYYYMMDD`. 3. **Scope the changes** — List files touched by the last two commits: `git diff --name-only origin/RELEASE_BRANCH~2 origin/RELEASE_BRANCH`. Expect three kinds: `eng/versioning/version_client.txt`, many `CHANGELOG.md`, and many `pom.xml` (+ possibly `README.md`). 4. **Reconcile `version_client.txt`** — Follow [references/version-client-resolution.md](references/version-client-resolution.md). 5. **Reconcile each `CHANGELOG.md`** — Follow [references/changelog-resolution.md](references/changelog-resolution.md). 6. **Regenerate `pom.xml`** — From the repo root run the version script with the `--skip-readme` (`--sr`) flag so `README.md` files are left untouched: ```bash python eng/versioning/update_versions.py --skip-readme ``` Do not stage any manual `pom.xml` edits; only the generated output. Confirm no `README.md` files appear in the resulting diff. 7. **Review & sanity-check** — Verify no v2 (`*-v2`) or unrelated libraries were touched, no `current-version` values were altered, and no beta version was reset to `beta.1`. 8. **Commit and open the PR against `main`** — Title it like `<Month> <Year> Patches Merge-back`. Summarize: bumped dependency versions, inserted `PATCH_DATE` CHANGELOG entries, and auto-generated pom.xml updates (READMEs intentionally left unchanged via `--skip-readme`). ## Examples - "Prepare the merge-back PR for `release/patch/20260701` into main." - "Bring the July 2026 patch releases back into main." ## Troubleshooting - **`current-version` mismatch after regeneration** (e.g. `2.59.0-beta.1` vs `2.59.0-beta.2`): you likely overwrote a `current-version`. Restore it from `main`; only `dependency-version` should change. - **Unexpected pom.xml diffs:** re-run `update_versions.py` only after `version_client.txt` is fully correct; stray diffs usually mean the version file still has a wrong entry. - **Accidental v2 library changes:** revert them — patch merge-backs only cover the patched GA/beta libraries listed in the release branch diff. - **Wrong CHANGELOG "from" versions** in `## X.Y.Z (PATCH_DATE)` dependency bullets: correct them to match the actual previous release, per the release branch entry.
View on GitHub