go-git-providers icon indicating copy to clipboard operation
go-git-providers copied to clipboard

GitLab GetCloneURL returns the wrong clone url in certain conditions

Open janderssonse opened this issue 11 months ago • 1 comments

Describe the bug

GitLab GetCloneUrl returns the wrong clone url in certain conditions.

To Reproduce

Here is a public project where you can reproduce it: https://gitlab.com/hanklank/anki-lpic

  • With the library - list public repositories for this user: https://gitlab.com/hanklank
  • Print out the clone urls for the project anki-lpic. *Notice that the clone URL should end with: anki-lpic - but ends with lpic. This means the one gets the wrong clone url, and cant clone it.

Had quick look in the code, The error is likely due to that go-git-providers only use the project name when creating the repository struct, and does not care about the real clone url - these will differ at times, like in the case given-> project NAME is lpic, but CLONE URL (and project path) is anki-lpic. I think if go-gitprovider would replace using Name with Path from the gitlab api it would fix it for all cases. Example: https://gitlab.com/api/v4/projects/hanklank%2Fanki-lpic name differs from clone url.

Currently this leads to GetCloneURL always giving the wrong clone url in these cases.

https://github.com/fluxcd/go-git-providers/blob/df839c56a32353a502ef9f9f3ff3209699de3fd3/gitlab/client_repositories_user.go#L83

(same with org-repos so it would need to be fixed there too)

Expected behavior

GitLab's GetCloneUrl should end in the real clone url, ie anki-lpic not in project name lpic.

Additional context

  • Go version: 1.22
  • Git provider: GitLab

janderssonse avatar Mar 24 '24 09:03 janderssonse

Bump, (as no-one responded since March, and it is kind of a blocker for getting correct urls - which at least I think it quite a major bug ) - is anyone maintaining the GitLab parts of the library? Currently it means the library is unusable for GitLab repos where the clone URL and project name differs. It would be great to know if this is an bug that likely will be fixed by the project or not, as then one can ponder either attempting a fix by a PR or just skip using the provider library and use the go-gitlab library directly. Thanks.

janderssonse avatar Sep 01 '24 07:09 janderssonse