From 15a24d1dc075e1324d396dbc8fcc2261f49f6ff2 Mon Sep 17 00:00:00 2001 From: Vince Broz Date: Tue, 20 Oct 2026 03:07:48 -0400 Subject: [PATCH 1/3] Detect amend aliases with macOS git macOS git's regex library does not support `\s`, so `git config --get-regexp` never matched an alias for `commit --amend` and amendment? returned false. Use the POSIX `[[:space:]]` class, which both git and Ruby understand. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Wo4FerFK9aaxrGrmVE9ncZ --- lib/overcommit/hook_context/helpers/file_modifications.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/overcommit/hook_context/helpers/file_modifications.rb b/lib/overcommit/hook_context/helpers/file_modifications.rb index 00aaccc8..e0823732 100644 --- a/lib/overcommit/hook_context/helpers/file_modifications.rb +++ b/lib/overcommit/hook_context/helpers/file_modifications.rb @@ -12,7 +12,9 @@ def amendment? cmd = Overcommit::Utils.parent_command return unless cmd - amend_pattern = 'commit(\s.*)?\s--amend(\s|$)' + # POSIX character class rather than `\s`, which macOS git's regex + # library does not support + amend_pattern = 'commit([[:space:]].*)?[[:space:]]--amend([[:space:]]|$)' # Since the ps command can return invalid byte sequences for commands # containing unicode characters, we replace the offending characters, From 63fbc963566b08dd74c7adb952f8c1d2283b7d7d Mon Sep 17 00:00:00 2001 From: Vince Broz Date: Tue, 20 Oct 2026 03:11:01 -0400 Subject: [PATCH 2/3] Pin CI runners to ubuntu-24.04 ubuntu-latest now resolves to ubuntu-26.04, for which setup-ruby has no Ruby 2.6-3.1 builds ("Unavailable version 3.0.7 for ruby on ubuntu-26.04"), so those matrix entries fail before running specs. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Wo4FerFK9aaxrGrmVE9ncZ --- .github/workflows/lint.yml | 2 +- .github/workflows/release-gem.yml | 2 +- .github/workflows/tests.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8cf8b4a0..9c27a07a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,7 @@ on: jobs: overcommit: timeout-minutes: 10 - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release-gem.yml b/.github/workflows/release-gem.yml index fee439eb..3cc8d1a4 100644 --- a/.github/workflows/release-gem.yml +++ b/.github/workflows/release-gem.yml @@ -7,7 +7,7 @@ on: jobs: release: timeout-minutes: 10 - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 environment: release permissions: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6688cd90..17b1db5d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,7 +8,7 @@ on: jobs: rspec: timeout-minutes: 15 - runs-on: ${{ matrix.os }}-latest + runs-on: ${{ matrix.os }}-24.04 strategy: fail-fast: false @@ -53,7 +53,7 @@ jobs: finish: needs: rspec - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Finalize code coverage report From 11f62b50334384222d1da45ce97c8fe1f5995341 Mon Sep 17 00:00:00 2001 From: Vince Broz Date: Wed, 21 Oct 2026 08:24:49 -0400 Subject: [PATCH 3/3] Run CI on ubuntu-26.04, old Rubies on 24.04 Name ubuntu-26.04 explicitly so runners do not move when ubuntu-latest does. setup-ruby has no Ruby 2.6-3.1 builds for ubuntu-26.04, so a matrix include keeps those rows on ubuntu-24.04. Non-ubuntu rows still use -latest. The explicit job name keeps check names as "rspec (, )", which upstream requires. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Wo4FerFK9aaxrGrmVE9ncZ --- .github/workflows/lint.yml | 2 +- .github/workflows/release-gem.yml | 2 +- .github/workflows/tests.yml | 13 +++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9c27a07a..c53b7193 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,7 @@ on: jobs: overcommit: timeout-minutes: 10 - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release-gem.yml b/.github/workflows/release-gem.yml index 3cc8d1a4..cfdfa678 100644 --- a/.github/workflows/release-gem.yml +++ b/.github/workflows/release-gem.yml @@ -7,7 +7,7 @@ on: jobs: release: timeout-minutes: 10 - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 environment: release permissions: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 17b1db5d..734abca0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,8 +7,9 @@ on: jobs: rspec: + name: rspec (${{ matrix.ruby-version }}, ${{ matrix.os }}) timeout-minutes: 15 - runs-on: ${{ matrix.os }}-24.04 + runs-on: ${{ matrix.runner || format('{0}-latest', matrix.os) }} strategy: fail-fast: false @@ -28,6 +29,14 @@ jobs: # Any contributor is welcome to fix them and enable the Windows build. # Please see Issue #836 for more details. # - windows + include: + - os: ubuntu + runner: ubuntu-26.04 + # setup-ruby has no builds of these Rubies for ubuntu-26.04 + - { ruby-version: "2.6", os: ubuntu, runner: ubuntu-24.04 } + - { ruby-version: "2.7", os: ubuntu, runner: ubuntu-24.04 } + - { ruby-version: "3.0", os: ubuntu, runner: ubuntu-24.04 } + - { ruby-version: "3.1", os: ubuntu, runner: ubuntu-24.04 } steps: - uses: actions/checkout@v4 @@ -53,7 +62,7 @@ jobs: finish: needs: rspec - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 steps: - name: Finalize code coverage report