From 03d6fb621280955f7018ed05f5e18ff33599ef49 Mon Sep 17 00:00:00 2001 From: Andrew Jong Date: Sat, 29 Aug 2026 18:13:03 -0400 Subject: [PATCH] =?UTF-8?q?hotfix(ci):=20post-release=20main=E2=86=92devel?= =?UTF-8?q?op=20sync=20must=20not=20skip=20on=20identical=20trees?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport of the sync-develop-from-main fix from develop (#412) so it is live for the 0.21.0 release: push-triggered workflows run from main's copy of the file. Skip now requires main to already be an ancestor of develop — a tree-diff skip fired right after every release (merge result content-identical to develop), so the ancestry-advancing merge commit was never pushed and develop's VERSION never rolled forward. VERSION 0.20.0 → 0.20.1 (CI-only change; bump required by the PR gate). Co-Authored-By: Claude Fable 5 --- .env | 2 +- .github/workflows/sync-develop-from-main.yaml | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.env b/.env index e05d98869..b1ad7e2b3 100644 --- a/.env +++ b/.env @@ -12,7 +12,7 @@ PROJECT_NAME="airstack" # If you've run ./airstack.sh setup, then this will auto-generate from the git commit hash every time a change is made # to a Dockerfile or docker-compose.yaml file. Otherwise this can also be set explicitly to make a release version. # auto-generated from git commit hash -VERSION="0.20.0" +VERSION="0.20.1" # Image-tag discriminator ONLY (appears in the image tag suffix, e.g. ..._robot-x86-64_dev). # No Dockerfile consumes it: "prebuilt" does NOT bake the built ros_ws into the image today — # a real prebuilt (workspace-baked) stage is future work. Keep "dev" (mounted code, built live). diff --git a/.github/workflows/sync-develop-from-main.yaml b/.github/workflows/sync-develop-from-main.yaml index 25d85d5b1..135a91863 100644 --- a/.github/workflows/sync-develop-from-main.yaml +++ b/.github/workflows/sync-develop-from-main.yaml @@ -42,9 +42,14 @@ jobs: git -c core.editor=true commit --no-edit fi - # If develop already contained everything main has, nothing to do. - if git diff --quiet origin/develop..HEAD; then - echo "develop already up to date with main; nothing to sync." + # Skip only when main is already in develop's ancestry. A tree + # diff is the wrong check here: right after a release, the merge + # result is content-identical to develop, but the merge commit + # must still be pushed (it advances the develop↔main merge base, + # preventing spurious conflicts on the next release PR) and the + # VERSION roll-forward below must still happen. + if git merge-base --is-ancestor origin/main origin/develop; then + echo "main is already an ancestor of develop; nothing to sync." echo "SKIP=true" >> $GITHUB_ENV fi