From e095d5a9b3ea80bde71cfc6ca8b52f23ce529396 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 18 Nov 2021 14:36:41 +0100 Subject: [PATCH] fix(git-refs): ignore refs/for (#12735) --- .../git-refs/__fixtures__/ls-remote-1.txt | 1 + lib/datasource/git-refs/index.spec.ts | 12 ++++++++++++ lib/datasource/git-refs/index.ts | 13 +++++++++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/datasource/git-refs/__fixtures__/ls-remote-1.txt b/lib/datasource/git-refs/__fixtures__/ls-remote-1.txt index 75a2d317e8..25b4857466 100644 --- a/lib/datasource/git-refs/__fixtures__/ls-remote-1.txt +++ b/lib/datasource/git-refs/__fixtures__/ls-remote-1.txt @@ -1,4 +1,5 @@ a9920c014aebc28dc1b23e7efcc006d0455cc710 HEAD +46fd703d4738905cd55e1c5c36a70e5d43432b9c refs/for/master 2e24e927538bbc03cc3cd946834c8f5fe333f32c refs/heads/feat/slim-image a9920c014aebc28dc1b23e7efcc006d0455cc710 refs/heads/master a9920c014aebc28dc1b23e7efcc006d045512345 refs/heads/v1.0.0 diff --git a/lib/datasource/git-refs/index.spec.ts b/lib/datasource/git-refs/index.spec.ts index 56adb9d9a1..dd626c7183 100644 --- a/lib/datasource/git-refs/index.spec.ts +++ b/lib/datasource/git-refs/index.spec.ts @@ -91,6 +91,18 @@ describe('datasource/git-refs/index', () => { ); expect(digest).toMatchSnapshot(); }); + it('ignores refs/for/', async () => { + simpleGit.mockReturnValue({ + listRemote() { + return Promise.resolve(lsRemote1); + }, + }); + const digest = await new GitRefsDatasource().getDigest( + { lookupName: 'a tag to look up' }, + 'master' + ); + expect(digest).toBe('a9920c014aebc28dc1b23e7efcc006d0455cc710'); + }); it('returns digest for HEAD', async () => { simpleGit.mockReturnValue({ listRemote() { diff --git a/lib/datasource/git-refs/index.ts b/lib/datasource/git-refs/index.ts index 6567ece8ff..81e14e933b 100644 --- a/lib/datasource/git-refs/index.ts +++ b/lib/datasource/git-refs/index.ts @@ -61,8 +61,17 @@ export class GitRefsDatasource extends Datasource { { lookupName }, this.id ); - const findValue = newValue || 'HEAD'; - const ref = rawRefs.find((rawRef) => rawRef.value === findValue); + let ref: RawRefs; + if (newValue) { + ref = rawRefs.find( + (rawRef) => + ['heads', 'tags'].includes(rawRef.type) && rawRef.value === newValue + ); + } else { + ref = rawRefs.find( + (rawRef) => rawRef.type === '' && rawRef.value === 'HEAD' + ); + } if (ref) { return ref.hash; } -- GitLab