From 632c9465117dfb8b146972af66e4da30088013dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thor=20Anker=20Kvisg=C3=A5rd=20Lange?= Date: Thu, 7 Mar 2024 18:06:05 +0100 Subject: [PATCH] feat: Remove user part of http clone url (#3462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some configuration of Bitbucket Datacenter seems to return username as part of the clone URL. This needs to be removed for `.netrc` to work properly. Closes #3443 --------- Signed-off-by: Thor Anker Kvisgård Lange --- server/forge/bitbucketdatacenter/convert.go | 12 +++++++++++- server/forge/bitbucketdatacenter/convert_test.go | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/server/forge/bitbucketdatacenter/convert.go b/server/forge/bitbucketdatacenter/convert.go index 28e974f76..0e9f68510 100644 --- a/server/forge/bitbucketdatacenter/convert.go +++ b/server/forge/bitbucketdatacenter/convert.go @@ -16,6 +16,7 @@ package bitbucketdatacenter import ( "fmt" + "net/url" "strings" "time" @@ -40,6 +41,15 @@ func convertID(id uint64) model.ForgeRemoteID { return model.ForgeRemoteID(fmt.Sprintf("%d", id)) } +func anonymizeLink(link string) (href string) { + parsed, err := url.Parse(link) + if err != nil { + return link + } + parsed.User = nil + return parsed.String() +} + func convertRepo(from *bb.Repository, perm *model.Perm, branch string) *model.Repo { r := &model.Repo{ ForgeRemoteID: convertID(from.ID), @@ -55,7 +65,7 @@ func convertRepo(from *bb.Repository, perm *model.Perm, branch string) *model.Re for _, l := range from.Links["clone"] { if l.Name == "http" { - r.Clone = l.Href + r.Clone = anonymizeLink(l.Href) } } diff --git a/server/forge/bitbucketdatacenter/convert_test.go b/server/forge/bitbucketdatacenter/convert_test.go index 1e2e15ae8..564f00530 100644 --- a/server/forge/bitbucketdatacenter/convert_test.go +++ b/server/forge/bitbucketdatacenter/convert_test.go @@ -67,7 +67,7 @@ func TestHelper(t *testing.T) { "clone": { { Name: "http", - Href: "https://git.domain/clone", + Href: "https://user@git.domain/clone", }, }, "self": { @@ -86,6 +86,7 @@ func TestHelper(t *testing.T) { g.Assert(to.SCMKind).Equal(model.RepoGit) g.Assert(to.FullName).Equal("PRJ/REPO") g.Assert(to.Perm).Equal(perm) + g.Assert(to.Clone).Equal("https://git.domain/clone") }) g.It("should convert repository push event", func() {