From 5921bc8a76f21dbff8ef5088dc2dc3b479ab5309 Mon Sep 17 00:00:00 2001 From: eric sciple Date: Fri, 9 Jan 2026 13:42:23 -0600 Subject: Fix tag handling: preserve annotations and explicit fetch-tags (#2356) This PR fixes several issues with tag handling in the checkout action: 1. fetch-tags: true now works (fixes #1471) - Tags refspec is now included in getRefSpec() when fetchTags=true - Previously tags were only fetched during a separate fetch that was overwritten by the main fetch 2. Tag checkout preserves annotations (fixes #290) - Tags are fetched via refspec (+refs/tags/*:refs/tags/*) instead of --tags flag - This fetches the actual tag objects, preserving annotations 3. Tag checkout with fetch-tags: true no longer fails (fixes #1467) - When checking out a tag with fetchTags=true, only the wildcard refspec is used (specific tag refspec is redundant) Changes: - src/ref-helper.ts: getRefSpec() now accepts fetchTags parameter and prepends tags refspec when true - src/git-command-manager.ts: fetch() simplified to always use --no-tags, tags are fetched explicitly via refspec - src/git-source-provider.ts: passes fetchTags to getRefSpec() - Added E2E test for fetch-tags option Related #1471, #1467, #290 --- .github/workflows/test.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to '.github') diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fe2539f..0383c88 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -87,6 +87,17 @@ jobs: - name: Verify fetch filter run: __test__/verify-fetch-filter.sh + # Fetch tags + - name: Checkout with fetch-tags + uses: ./ + with: + ref: test-data/v2/basic + path: fetch-tags-test + fetch-tags: true + - name: Verify fetch-tags + shell: bash + run: __test__/verify-fetch-tags.sh + # Sparse checkout - name: Sparse checkout uses: ./ -- cgit v1.2.3