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