extension_ci: Use fork point for version comparison (#49972)

Finn Evers created

Lost another battle to the GitHub docs. Instead, now let's just do it
ourselves here in bash and not guess whatever GitHub is referring to in
their documentation..

Release Notes:

- N/A

Change summary

.github/workflows/extension_bump.yml                | 7 +++----
.github/workflows/extension_tests.yml               | 7 +++----
tooling/xtask/src/tasks/workflows/extension_bump.rs | 6 +++---
3 files changed, 9 insertions(+), 11 deletions(-)

Detailed changes

.github/workflows/extension_bump.yml 🔗

@@ -39,8 +39,9 @@ jobs:
       run: |
         CURRENT_VERSION="$(sed -n 's/^version = \"\(.*\)\"/\1/p' < extension.toml | tr -d '[:space:]')"
 
-        if [[ -n "$PR_PARENT_REF" ]]; then
-            git checkout "$PR_PARENT_REF"
+        if [[ "${{ github.event_name }}" == "pull_request" ]]; then
+            PR_FORK_POINT="$(git merge-base --fork-point main)"
+            git checkout "$PR_FORK_POINT"
         elif BRANCH_PARENT_SHA="$(git merge-base origin/main origin/zed-zippy-autobump)"; then
             git checkout "$BRANCH_PARENT_SHA"
         else
@@ -54,8 +55,6 @@ jobs:
             echo "version_changed=true" >> "$GITHUB_OUTPUT"
 
         echo "current_version=${CURRENT_VERSION}" >> "$GITHUB_OUTPUT"
-      env:
-        PR_PARENT_REF: ${{ github.head_ref }}
     outputs:
       version_changed: ${{ steps.compare-versions-check.outputs.version_changed }}
       current_version: ${{ steps.compare-versions-check.outputs.current_version }}

.github/workflows/extension_tests.yml 🔗

@@ -114,8 +114,9 @@ jobs:
       run: |
         CURRENT_VERSION="$(sed -n 's/^version = \"\(.*\)\"/\1/p' < extension.toml | tr -d '[:space:]')"
 
-        if [[ -n "$PR_PARENT_REF" ]]; then
-            git checkout "$PR_PARENT_REF"
+        if [[ "${{ github.event_name }}" == "pull_request" ]]; then
+            PR_FORK_POINT="$(git merge-base --fork-point main)"
+            git checkout "$PR_FORK_POINT"
         elif BRANCH_PARENT_SHA="$(git merge-base origin/main origin/zed-zippy-autobump)"; then
             git checkout "$BRANCH_PARENT_SHA"
         else
@@ -129,8 +130,6 @@ jobs:
             echo "version_changed=true" >> "$GITHUB_OUTPUT"
 
         echo "current_version=${CURRENT_VERSION}" >> "$GITHUB_OUTPUT"
-      env:
-        PR_PARENT_REF: ${{ github.head_ref }}
     - name: extension_tests::verify_version_did_not_change
       run: |
         if [[ ${{ steps.compare-versions-check.outputs.version_changed }} == "true" && "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.user.login }}" != "zed-zippy[bot]" ]] ; then

tooling/xtask/src/tasks/workflows/extension_bump.rs 🔗

@@ -150,8 +150,9 @@ pub(crate) fn compare_versions() -> (Step<Run>, StepOutput, StepOutput) {
     r#"
         CURRENT_VERSION="$({VERSION_CHECK})"
 
-        if [[ -n "$PR_PARENT_REF" ]]; then
-            git checkout "$PR_PARENT_REF"
+        if [[ "${{{{ github.event_name }}}}" == "pull_request" ]]; then
+            PR_FORK_POINT="$(git merge-base --fork-point main)"
+            git checkout "$PR_FORK_POINT"
         elif BRANCH_PARENT_SHA="$(git merge-base origin/main origin/zed-zippy-autobump)"; then
             git checkout "$BRANCH_PARENT_SHA"
         else
@@ -167,7 +168,6 @@ pub(crate) fn compare_versions() -> (Step<Run>, StepOutput, StepOutput) {
         echo "current_version=${{CURRENT_VERSION}}" >> "$GITHUB_OUTPUT"
         "#
     })
-    .add_env(("PR_PARENT_REF", Context::github().head_ref()))
     .id("compare-versions-check");
 
     let version_changed = StepOutput::new(&check_needs_bump, "version_changed");