fix: cherry pick #5037 (#5049)
* fix: cherry pick #5037
cherry pick #5037
Nddtfjiang <zhicheng.jiang@merico.dev>
* fix: fix parent id error
fix parent id error
Nddtfjiang <zhicheng.jiang@merico.dev>
diff --git a/backend/plugins/gitlab/api/remote.go b/backend/plugins/gitlab/api/remote.go
index 6aa1774..904e41c 100644
--- a/backend/plugins/gitlab/api/remote.go
+++ b/backend/plugins/gitlab/api/remote.go
@@ -109,6 +109,12 @@
// get gid and pageData
gid := groupId[0]
+ rgid := gid
+ if len(rgid) >= 6 {
+ if rgid[:6] == "group:" {
+ rgid = rgid[6:]
+ }
+ }
pageData, err := GetPageDataFromPageToken(pageToken[0])
if err != nil {
return nil, errors.BadInput.New("failed to get paget token")
@@ -134,7 +140,7 @@
query.Set("top_level_only", "true")
res, err = apiClient.Get("groups", query, nil)
} else {
- res, err = apiClient.Get(fmt.Sprintf("groups/%s/subgroups", gid), query, nil)
+ res, err = apiClient.Get(fmt.Sprintf("groups/%s/subgroups", rgid), query, nil)
}
if err != nil {
return nil, err
@@ -150,7 +156,7 @@
for _, group := range resBody {
child := RemoteScopesChild{
Type: TypeGroup,
- Id: strconv.Itoa(group.Id),
+ Id: "group:" + strconv.Itoa(group.Id),
Name: group.Name,
// don't need to save group into data
Data: nil,
@@ -198,7 +204,7 @@
res, err = apiClient.Get(fmt.Sprintf("users/%d/projects", apiClient.GetData(models.GitlabApiClientData_UserId)), query, nil)
} else {
query.Set("with_shared", "false")
- res, err = apiClient.Get(fmt.Sprintf("/groups/%s/projects", gid), query, nil)
+ res, err = apiClient.Get(fmt.Sprintf("/groups/%s/projects", rgid), query, nil)
}
if err != nil {
return nil, err