From 9e7c3ae074faa121d81a870df67a8aa679d3baa8 Mon Sep 17 00:00:00 2001
From: Bastian <bastian.ike@gmail.com>
Date: Tue, 4 Jan 2022 20:52:35 +0100
Subject: [PATCH] feat(gomod): support .git repository indicators on gitlab
 (#13352)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/datasource/go/get-datasource.spec.ts | 17 +++++++++++++++++
 lib/datasource/go/get-datasource.ts      | 10 ++++++++++
 2 files changed, 27 insertions(+)

diff --git a/lib/datasource/go/get-datasource.spec.ts b/lib/datasource/go/get-datasource.spec.ts
index b90e65180f..66290eb8ec 100644
--- a/lib/datasource/go/get-datasource.spec.ts
+++ b/lib/datasource/go/get-datasource.spec.ts
@@ -121,6 +121,23 @@ describe('datasource/go/get-datasource', () => {
         });
       });
 
+      it('supports GitLab deps on private subgroups', async () => {
+        httpMock
+          .scope('https://gitlab.com')
+          .get('/group/subgroup/private.git/v3?go-get=1')
+          .reply(200, loadFixture('go-get-gitlab.html'));
+
+        const res = await getDatasource(
+          'gitlab.com/group/subgroup/private.git/v3'
+        );
+
+        expect(res).toEqual({
+          datasource: gitlabDatasource,
+          lookupName: 'group/subgroup/private',
+          registryUrl: 'https://gitlab.com',
+        });
+      });
+
       it('supports GitLab with URL mismatch', async () => {
         const mismatchingResponse = loadFixture('go-get-github.html').replace(
           'https://github.com/golang/text/',
diff --git a/lib/datasource/go/get-datasource.ts b/lib/datasource/go/get-datasource.ts
index a0a8ef2dce..cf4a818da9 100644
--- a/lib/datasource/go/get-datasource.ts
+++ b/lib/datasource/go/get-datasource.ts
@@ -45,6 +45,16 @@ async function goGetDatasource(goModule: string): Promise<DataSource | null> {
 
     if (gitlabUrl && gitlabUrlName) {
       if (gitlabModuleName?.startsWith(gitlabUrlName)) {
+        if (gitlabModuleName.includes('.git')) {
+          return {
+            datasource: gitlab.id,
+            registryUrl: gitlabUrl,
+            lookupName: gitlabModuleName.substring(
+              0,
+              gitlabModuleName.indexOf('.git')
+            ),
+          };
+        }
         return {
           datasource: gitlab.id,
           registryUrl: gitlabUrl,
-- 
GitLab