From 6ee6dc2eb008e5df289f39fb26029f7b242d05c2 Mon Sep 17 00:00:00 2001 From: forgejo-backport-action Date: Thu, 5 Mar 2026 03:03:15 +0100 Subject: [PATCH] [v14.0/forgejo] fix: prevent panic on gitlab import (releases/issues) (#11484) **Backport:** https://codeberg.org/forgejo/forgejo/pulls/11282 It is unfortunately all mixed up, because refreshing the data, means breaking the tests. And changing the code means needing fresh data. - tests: ignore some more headers and sort the rest when dumping http responses - code: fixed #10234 by requesting the latest issues first. - tests: created a new repo to replace the disappeared repo, needed for the skip-numbers test - refreshed the testdata. - follow-up fixes to get the tests green. - including a cherry-pick of https://github.com/go-gitea/gitea/pull/36295 and #11272 Co-authored-by: oliverpool Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11484 Reviewed-by: Gusted Reviewed-by: Robert Wolff Co-authored-by: forgejo-backport-action Co-committed-by: forgejo-backport-action --- models/unittest/mock_http.go | 8 +- modules/migration/release.go | 6 +- release-notes/11282.md | 3 + services/migrations/github.go | 1 - services/migrations/github_test.go | 2 - services/migrations/gitlab.go | 64 ++---- services/migrations/gitlab_test.go | 195 ++++++++++++------ services/migrations/main_test.go | 18 +- .../GET_%2Fapi%2Fv4%2Fprojects%2F61363672 | 27 ++- ...sues%2F1%2Faward_emoji%3Fpage=1&per_page=2 | 30 --- ...sues%2F1%2Faward_emoji%3Fpage=1&per_page=3 | 45 ++-- ...sues%2F1%2Faward_emoji%3Fpage=2&per_page=2 | 32 --- ...sues%2F2%2Faward_emoji%3Fpage=1&per_page=2 | 30 --- ...sues%2F2%2Faward_emoji%3Fpage=1&per_page=3 | 39 ++-- ...sues%2F2%2Faward_emoji%3Fpage=2&per_page=2 | 30 --- ...sues%2F2%2Faward_emoji%3Fpage=2&per_page=3 | 47 ++--- ...sues%2F2%2Faward_emoji%3Fpage=3&per_page=2 | 30 --- ...sues%2F2%2Faward_emoji%3Fpage=3&per_page=3 | 39 ++-- ...sues%2F2%2Faward_emoji%3Fpage=4&per_page=2 | 32 --- ...es%2F2%2Fdiscussions%3Fpage=1&per_page=100 | 49 +++-- ...esource_state_events%3Fpage=1&per_page=100 | 45 ++-- ...sues%2F3%2Faward_emoji%3Fpage=1&per_page=3 | 43 ++-- ...es%2F3%2Fdiscussions%3Fpage=1&per_page=100 | 45 ++-- ...esource_state_events%3Fpage=1&per_page=100 | 45 ++-- ...sues%2F4%2Faward_emoji%3Fpage=1&per_page=3 | 29 +++ ...d_at&page=1&per_page=3&sort=desc&state=all | 27 +++ ...d_at&page=2&per_page=3&sort=desc&state=all | 27 +++ ...ues%3Fpage=1&per_page=2&sort=asc&state=all | 30 --- ...ues%3Fpage=1&per_page=3&sort=asc&state=all | 30 --- ...%2F61363672%2Flabels%3Fpage=1&per_page=100 | 51 +++-- ...2Fprojects%2F61363672%2Fmerge_requests%2F1 | 35 ++-- ...F61363672%2Fmerge_requests%2F1%2Fapprovals | 31 ++- ...ests%2F1%2Faward_emoji%3Fpage=1&per_page=1 | 30 --- ...ests%2F1%2Faward_emoji%3Fpage=1&per_page=2 | 47 ++--- ...ests%2F1%2Faward_emoji%3Fpage=2&per_page=1 | 30 --- ...ests%2F1%2Faward_emoji%3Fpage=2&per_page=2 | 49 +++-- ...ests%2F1%2Faward_emoji%3Fpage=3&per_page=1 | 32 --- ...2Fprojects%2F61363672%2Fmerge_requests%2F2 | 35 ++-- ...F61363672%2Fmerge_requests%2F2%2Fapprovals | 16 -- ...ests%2F2%2Faward_emoji%3Fpage=1&per_page=1 | 32 --- ...ests%2F2%2Faward_emoji%3Fpage=1&per_page=2 | 39 ++-- ...ts%2F2%2Fdiscussions%3Fpage=1&per_page=100 | 39 ++-- ...esource_state_events%3Fpage=1&per_page=100 | 51 +++-- ...e_requests%3Fpage=1&per_page=1&view=simple | 30 --- ...e_requests%3Fpage=1&per_page=2&view=simple | 41 ++-- ...milestones%3Fpage=1&per_page=100&state=all | 41 ++-- ...F61363672%2Freleases%3Fpage=1&per_page=100 | 33 ++- ...pi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo | 31 ++- ...Fapi%2Fv4%2Fprojects%2Fgitea%252Ftest_repo | 17 -- .../full_download/GET_%2Fapi%2Fv4%2Fversion | 33 ++- .../GET_%2Fapi%2Fv4%2Fprojects%2F6590996 | 22 -- ...ues%2F2%2Faward_emoji%3Fpage=1&per_page=10 | 31 --- ...es%3Fpage=1&per_page=10&sort=asc&state=all | 29 --- ...%2Fprojects%2F6590996%2Fmerge_requests%2F1 | 22 -- ...sts%2F1%2Faward_emoji%3Fpage=1&per_page=10 | 31 --- ..._requests%3Fpage=1&per_page=10&view=simple | 29 --- .../GET_%2Fapi%2Fv4%2Fprojects%2F79476606 | 20 ++ ...ues%2F2%2Faward_emoji%3Fpage=1&per_page=10 | 29 +++ ..._at&page=1&per_page=10&sort=desc&state=all | 27 +++ ...2Fprojects%2F79476606%2Fmerge_requests%2F1 | 20 ++ ...sts%2F1%2Faward_emoji%3Fpage=1&per_page=10 | 29 +++ ..._requests%3Fpage=1&per_page=10&view=simple | 27 +++ ...ts%2Fforgejo%252Ftest_repo-skipped-numbers | 20 ++ ...%2Fv4%2Fprojects%2Ftroyengel%252Farchbuild | 22 -- .../GET_%2Fapi%2Fv4%2Fversion | 36 ++-- 65 files changed, 908 insertions(+), 1277 deletions(-) create mode 100644 release-notes/11282.md delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 create mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F4%2Faward_emoji%3Fpage=1&per_page=3 create mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=1&per_page=3&sort=desc&state=all create mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=2&per_page=3&sort=desc&state=all delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fapprovals delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple delete mode 100644 services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fgitea%252Ftest_repo delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996 delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%3Fpage=1&per_page=10&sort=asc&state=all delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1 delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%3Fpage=1&per_page=10&view=simple create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606 create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%3Forder_by=created_at&page=1&per_page=10&sort=desc&state=all create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1 create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%3Fpage=1&per_page=10&view=simple create mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo-skipped-numbers delete mode 100644 services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Ftroyengel%252Farchbuild diff --git a/models/unittest/mock_http.go b/models/unittest/mock_http.go index 3c4ddd8e27..b8413104b3 100644 --- a/models/unittest/mock_http.go +++ b/models/unittest/mock_http.go @@ -7,6 +7,7 @@ import ( "bufio" "fmt" "io" + "maps" "net/http" "net/http/httptest" "net/url" @@ -29,7 +30,7 @@ import ( // test data files func NewMockWebServer(t *testing.T, liveServerBaseURL, testDataDir string, liveMode bool) *httptest.Server { mockServerBaseURL := "" - ignoredHeaders := []string{"cf-ray", "server", "date", "report-to", "nel", "x-request-id"} + ignoredHeaders := []string{"cf-ray", "server", "date", "report-to", "nel", "x-request-id", "set-cookie", "x-gitlab-meta"} server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { path := NormalizedFullPath(r.URL) @@ -46,6 +47,7 @@ func NewMockWebServer(t *testing.T, liveServerBaseURL, testDataDir string, liveM fixturePath = fmt.Sprintf("%s/%s", testDataDir, strings.TrimLeft(r.URL.Path, "/")) } if liveMode { + require.NoError(t, os.MkdirAll(testDataDir, 0o755)) liveURL := fmt.Sprintf("%s%s", liveServerBaseURL, path) request, err := http.NewRequest(r.Method, liveURL, nil) @@ -68,8 +70,8 @@ func NewMockWebServer(t *testing.T, liveServerBaseURL, testDataDir string, liveM defer fixture.Close() fixtureWriter := bufio.NewWriter(fixture) - for headerName, headerValues := range response.Header { - for _, headerValue := range headerValues { + for _, headerName := range slices.Sorted(maps.Keys(response.Header)) { + for _, headerValue := range response.Header[headerName] { if !slices.Contains(ignoredHeaders, strings.ToLower(headerName)) { _, err := fmt.Fprintf(fixtureWriter, "%s: %s\n", headerName, headerValue) require.NoError(t, err, "writing the header of the HTTP response to the fixture file failed") diff --git a/modules/migration/release.go b/modules/migration/release.go index f92cf25e7b..1d9f32ad3c 100644 --- a/modules/migration/release.go +++ b/modules/migration/release.go @@ -10,9 +10,9 @@ import ( // ReleaseAsset represents a release asset type ReleaseAsset struct { - ID int64 - Name string - ContentType *string `yaml:"content_type"` + ID int64 + Name string + Size *int DownloadCount *int `yaml:"download_count"` Created time.Time diff --git a/release-notes/11282.md b/release-notes/11282.md new file mode 100644 index 0000000000..be91c77bff --- /dev/null +++ b/release-notes/11282.md @@ -0,0 +1,3 @@ +fix: prevent panic when importing issues from GitLab +fix: prevent panic when importing releases with more than 4 release assets from GitLab +fix: correct re-mapping of merge-request numbers mentioned in GitLab comments diff --git a/services/migrations/github.go b/services/migrations/github.go index 04cbd690cf..ed419ed444 100644 --- a/services/migrations/github.go +++ b/services/migrations/github.go @@ -352,7 +352,6 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) r.Assets = append(r.Assets, &base.ReleaseAsset{ ID: asset.GetID(), Name: asset.GetName(), - ContentType: asset.ContentType, Size: asset.Size, DownloadCount: asset.DownloadCount, Created: asset.CreatedAt.Time, diff --git a/services/migrations/github_test.go b/services/migrations/github_test.go index cf7c1d2958..29a78f53fc 100644 --- a/services/migrations/github_test.go +++ b/services/migrations/github_test.go @@ -236,7 +236,6 @@ func TestGitHubDownloadRepo(t *testing.T) { }, labels) id := int64(280443629) - ct := "application/pdf" size := 550175 dc := 0 @@ -256,7 +255,6 @@ func TestGitHubDownloadRepo(t *testing.T) { { ID: id, Name: "wireguard.pdf", - ContentType: &ct, Size: &size, DownloadCount: &dc, Created: time.Date(2025, time.August, 7, 23, 39, 27, 0, time.UTC), diff --git a/services/migrations/gitlab.go b/services/migrations/gitlab.go index b58046c4fc..53d3ab7490 100644 --- a/services/migrations/gitlab.go +++ b/services/migrations/gitlab.go @@ -65,10 +65,13 @@ type gitlabIIDResolver struct { } func (r *gitlabIIDResolver) recordIssueIID(issueIID int) { - if r.frozen { - panic("cannot record issue IID after pull request IID generation has started") + if int64(issueIID) <= r.maxIssueIID { + return } - r.maxIssueIID = max(r.maxIssueIID, int64(issueIID)) + if r.frozen { + panic("cannot record bigger issue IID after pull request IID generation has started") + } + r.maxIssueIID = int64(issueIID) } func (r *gitlabIIDResolver) generatePullRequestNumber(mrIID int) int64 { @@ -332,12 +335,11 @@ func (g *GitlabDownloader) convertGitlabRelease(rel *gitlab.Release) *base.Relea httpClient := NewMigrationHTTPClient() - for k, asset := range rel.Assets.Links { + for _, asset := range rel.Assets.Links { assetID := asset.ID // Don't optimize this, for closure we need a local variable r.Assets = append(r.Assets, &base.ReleaseAsset{ ID: int64(asset.ID), Name: asset.Name, - ContentType: &rel.Assets.Sources[k].Format, Size: &zero, DownloadCount: &zero, DownloadFunc: func() (io.ReadCloser, error) { @@ -403,15 +405,18 @@ type gitlabIssueContext struct { // Note: issue label description and colors are not supported by the go-gitlab library at this time func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, error) { state := "all" - sort := "asc" + // we want most recent issues first, to get the biggest issue IID immediately + sort := "desc" + orderBy := "created_at" if perPage > g.maxPerPage { perPage = g.maxPerPage } opt := &gitlab.ListProjectIssuesOptions{ - State: &state, - Sort: &sort, + State: &state, + Sort: &sort, + OrderBy: &orderBy, ListOptions: gitlab.ListOptions{ PerPage: perPage, Page: page, @@ -795,39 +800,14 @@ func (g *GitlabDownloader) awardsToReactions(awards []*gitlab.AwardEmoji) []*bas return result } -// Build on the assumption, that PR IDs will resolve after Issue IDs -func (g *GitlabDownloader) convertMRReference(body string) string { - maxLength := len(body) - for i := 0; i < maxLength; i++ { - if body[i] == '!' { - var collected string - for k := i + 1; k < maxLength; k++ { // for each rune after ! check if next rune is integer - if body[k]-'0' <= 9 { - collected += string(body[k]) - if k == maxLength-1 { // The last rune in the string was an integer - body = g.updateAndInsert(body, collected, i+1, k) - } - } else if len(collected) > 0 { // Integers have been collected, update value - body = g.updateAndInsert(body, collected, i+1, k) - maxLength = len(body) - i = k - break // We're done, continue after our replacement - } - } - } - } - return body -} +var mrFinder = regexp.MustCompile(`![0-9]+`) -func (g *GitlabDownloader) updateAndInsert(description, oldReference string, endFirst, startSecond int) string { - oldVal, _ := strconv.Atoi(oldReference) - newVal := oldVal + int(g.iidResolver.maxIssueIID) - firstPart := description[0:endFirst] - firstPart += strconv.Itoa(newVal) - var secondPart string - if startSecond < len(description)-1 { - secondPart = description[startSecond:] - } - description = firstPart + secondPart - return description +// In gitlab, issues and merge-request have split numbering +// Adjust the merge-request numbers (preserve the issue numbers) +func (g *GitlabDownloader) convertMRReference(body string) string { + return mrFinder.ReplaceAllStringFunc(body, func(s string) string { + oldVal, _ := strconv.Atoi(s[1:]) // skip the leading exclamation mark + newVal := g.iidResolver.generatePullRequestNumber(oldVal) + return "!" + strconv.FormatInt(newVal, 10) + }) } diff --git a/services/migrations/gitlab_test.go b/services/migrations/gitlab_test.go index 2a1ecc1c9f..37fdea9475 100644 --- a/services/migrations/gitlab_test.go +++ b/services/migrations/gitlab_test.go @@ -48,8 +48,8 @@ func TestGitlabDownloadRepo(t *testing.T) { topics, err := downloader.GetTopics() require.NoError(t, err) - assert.Len(t, topics, 2) - assert.Equal(t, []string{"migration", "test"}, topics) + assert.Len(t, topics, 3) + assert.Equal(t, []string{"migration", "migration test", "test"}, topics) milestones, err := downloader.GetMilestones() require.NoError(t, err) @@ -123,6 +123,10 @@ func TestGitlabDownloadRepo(t *testing.T) { releases, err := downloader.GetReleases() require.NoError(t, err) + // TODO: fix size, currently reported as 0 + // See https://codeberg.org/forgejo/forgejo/issues/11471 + size := 0 + dc := 0 assertReleasesEqual(t, []*base.Release{ { TagName: "v0.9.99", @@ -132,6 +136,50 @@ func TestGitlabDownloadRepo(t *testing.T) { Created: time.Date(2024, 9, 3, 15, 1, 1, 513000000, time.UTC), PublisherID: 548513, PublisherName: "mkobel", + Assets: []*base.ReleaseAsset{ + { + ID: 10694714, + Name: "Forgejo logo", + Size: &size, + DownloadCount: &dc, + }, + { + // TODO: fix name or URL, doesn't make sense to download without extension + // See https://codeberg.org/forgejo/forgejo/issues/11471 + ID: 10687293, + Name: "zip (other)", + Size: &size, + DownloadCount: &dc, + // TODO: fix date, currently time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC) + // See https://codeberg.org/forgejo/forgejo/issues/11471 + // Created: time.Date(2025, time.August, 7, 23, 39, 27, 0, time.UTC), + // Updated: time.Date(2025, time.August, 7, 23, 39, 29, 0, time.UTC), + }, + { + ID: 10687292, + Name: "Forgejo", + Size: &size, + DownloadCount: &dc, + }, + { + ID: 10687291, + Name: "Frogejo 🐸", + Size: &size, + DownloadCount: &dc, + }, + { + ID: 10687290, + Name: "tar.bz2 (runbook)", + Size: &size, + DownloadCount: &dc, + }, + { + ID: 10687289, + Name: "tar.gz (package)", + Size: &size, + DownloadCount: &dc, + }, + }, }, }, releases) @@ -140,36 +188,30 @@ func TestGitlabDownloadRepo(t *testing.T) { assert.False(t, isEnd) assertIssuesEqual(t, []*base.Issue{ { - Number: 1, - Title: "Please add an animated gif icon to the merge button", - Content: "I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:", - Milestone: "1.0.0", - PosterID: 548513, - PosterName: "mkobel", - State: "closed", - Created: time.Date(2024, 9, 3, 14, 42, 34, 924000000, time.UTC), - Updated: time.Date(2024, 9, 3, 14, 48, 43, 756000000, time.UTC), - Labels: []*base.Label{ - { - Name: "bug", - }, - { - Name: "discussion", - }, - }, - Reactions: []*base.Reaction{ - { - UserID: 548513, - UserName: "mkobel", - Content: "thumbsup", - }, - { - UserID: 548513, - UserName: "mkobel", - Content: "open_mouth", - }, - }, - Closed: timePtr(time.Date(2024, 9, 3, 14, 43, 10, 708000000, time.UTC)), + Number: 4, + Title: "Missing \"migration_test\" and \"migration_test_migration_test_migration_test\" topic", + Content: "This is required for https://codeberg.org/forgejo/forgejo/pulls/10336.", + Milestone: "", + PosterID: 29018602, + PosterName: "amadaluzia", + State: "opened", + Created: time.Date(2025, time.December, 6, 14, 2, 59, 995000000, time.UTC), + Updated: time.Date(2025, time.December, 6, 15, 4, 37, 324000000, time.UTC), + Labels: []*base.Label{}, + Reactions: []*base.Reaction{}, + }, + { + Number: 3, + Title: "Fix plz", + Content: "Can we do something about it? !6 is maybe related to that.", // was "!2" on gitlab, now !6 on forgejo + Milestone: "", + PosterID: 10529876, + PosterName: "patdyn", + State: "opened", + Created: time.Date(2025, time.November, 25, 9, 49, 31, 991000000, time.UTC), + Updated: time.Date(2025, time.November, 25, 9, 49, 31, 991000000, time.UTC), + Labels: []*base.Label{}, + Reactions: []*base.Reaction{}, }, { Number: 2, @@ -180,7 +222,7 @@ func TestGitlabDownloadRepo(t *testing.T) { PosterName: "mkobel", State: "closed", Created: time.Date(2024, 9, 3, 14, 42, 35, 371000000, time.UTC), - Updated: time.Date(2024, 9, 3, 20, 3, 43, 536000000, time.UTC), + Updated: time.Date(2026, 2, 13, 20, 46, 11, 889000000, time.UTC), Labels: []*base.Label{ { Name: "duplicate", @@ -220,18 +262,42 @@ func TestGitlabDownloadRepo(t *testing.T) { }, Closed: timePtr(time.Date(2024, 9, 3, 14, 43, 10, 906000000, time.UTC)), }, + }, issues) + issues, isEnd, err = downloader.GetIssues(2, 3) + require.NoError(t, err) + assert.True(t, isEnd) + assertIssuesEqual(t, []*base.Issue{ { - Number: 3, - Title: "Fix plz", - Content: "Can we do something about it? !5 is maybe related to that.", - Milestone: "", - PosterID: 10529876, - PosterName: "patdyn", - State: "opened", - Created: time.Date(2025, time.November, 25, 9, 49, 31, 991000000, time.UTC), - Updated: time.Date(2025, time.November, 25, 9, 49, 31, 991000000, time.UTC), - Labels: []*base.Label{}, - Reactions: []*base.Reaction{}, + Number: 1, + Title: "Please add an animated gif icon to the merge button", + Content: "I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:", + Milestone: "1.0.0", + PosterID: 548513, + PosterName: "mkobel", + State: "closed", + Created: time.Date(2024, 9, 3, 14, 42, 34, 924000000, time.UTC), + Updated: time.Date(2024, 9, 3, 14, 48, 43, 756000000, time.UTC), + Labels: []*base.Label{ + { + Name: "bug", + }, + { + Name: "discussion", + }, + }, + Reactions: []*base.Reaction{ + { + UserID: 548513, + UserName: "mkobel", + Content: "thumbsup", + }, + { + UserID: 548513, + UserName: "mkobel", + Content: "open_mouth", + }, + }, + Closed: timePtr(time.Date(2024, 9, 3, 14, 43, 10, 708000000, time.UTC)), }, }, issues) @@ -258,6 +324,15 @@ func TestGitlabDownloadRepo(t *testing.T) { Content: "A second comment", Reactions: nil, }, + { + IssueIndex: 2, + PosterID: 2005797, + PosterName: "oliverpool", + Created: time.Date(2026, 2, 13, 20, 46, 11, 841000000, time.UTC), + Content: "with an image ![image](/uploads/3756af8a4893bea08b99536df000e932/image.png){width=217 height=280}", + Reactions: nil, + CommentType: "close", + }, { IssueIndex: 2, PosterID: 548513, @@ -281,7 +356,7 @@ func TestGitlabDownloadRepo(t *testing.T) { PosterID: 10529876, PosterName: "patdyn", Created: time.Date(2025, time.November, 25, 9, 49, 50, 899000000, time.UTC), - Content: "No actually its !4", + Content: "No actually its !5", Reactions: nil, }, }, comments) @@ -298,7 +373,7 @@ func TestGitlabDownloadRepo(t *testing.T) { PosterID: 10529876, PosterName: "patdyn", Created: time.Date(2025, time.November, 25, 9, 49, 0, 750000000, time.UTC), - Content: "Although we had some trouble with !4", + Content: "Although we had some trouble with !5.", Reactions: nil, }, { @@ -315,9 +390,9 @@ func TestGitlabDownloadRepo(t *testing.T) { require.NoError(t, err) assertPullRequestsEqual(t, []*base.PullRequest{ { - Number: 5, + Number: 6, Title: "Test/parsing", - Content: "Simillar to !4 this solves an issue.", + Content: "Simillar to !5 this solves an issue.", Milestone: "", PosterID: 10529876, PosterName: "patdyn", @@ -347,7 +422,7 @@ func TestGitlabDownloadRepo(t *testing.T) { Context: gitlabIssueContext{IsMergeRequest: true}, }, { - Number: 4, + Number: 5, Title: "Test branch", Content: "do not merge this PR", Milestone: "1.1.0", @@ -417,19 +492,20 @@ func TestGitlabSkippedIssueNumber(t *testing.T) { server := unittest.NewMockWebServer(t, "https://gitlab.com", fixturePath, gitlabPersonalAccessToken != "") defer server.Close() - downloader, err := NewGitlabDownloader(t.Context(), server.URL, "troyengel/archbuild", "", "", gitlabPersonalAccessToken) + downloader, err := NewGitlabDownloader(t.Context(), server.URL, "forgejo/test_repo-skipped-numbers", "", "", gitlabPersonalAccessToken) if err != nil { t.Fatalf("NewGitlabDownloader is nil: %v", err) } repo, err := downloader.GetRepoInfo() require.NoError(t, err) + // Repo Owner is blank in Gitlab Group repos assertRepositoryEqual(t, &base.Repository{ - Name: "archbuild", - Owner: "troyengel", - Description: "Arch packaging and build files", - CloneURL: server.URL + "/troyengel/archbuild.git", - OriginalURL: server.URL + "/troyengel/archbuild", - DefaultBranch: "master", + Name: "test_repo-skipped-numbers", + Owner: "", + Description: "", + CloneURL: server.URL + "/forgejo/test_repo-skipped-numbers.git", + OriginalURL: server.URL + "/forgejo/test_repo-skipped-numbers", + DefaultBranch: "main", }, repo) issues, isEnd, err := downloader.GetIssues(1, 10) @@ -439,7 +515,7 @@ func TestGitlabSkippedIssueNumber(t *testing.T) { // the only issue in this repository has number 2 assert.Len(t, issues, 1) assert.EqualValues(t, 2, issues[0].Number) - assert.Equal(t, "vpn unlimited errors", issues[0].Title) + assert.Equal(t, "2nd issue", issues[0].Title) prs, _, err := downloader.GetPullRequests(1, 10) require.NoError(t, err) @@ -448,7 +524,7 @@ func TestGitlabSkippedIssueNumber(t *testing.T) { // pull request 3 in Forgejo assert.Len(t, prs, 1) assert.EqualValues(t, 3, prs[0].Number) - assert.Equal(t, "Review", prs[0].Title) + assert.Equal(t, "cleanup README.md", prs[0].Title) } func gitlabClientMockSetup(t *testing.T) (*http.ServeMux, *httptest.Server, *gitlab.Client) { @@ -744,6 +820,7 @@ func TestCommentBodyParser(t *testing.T) { testNote4 := makeTestNote(4, "Closed by !1 and !14", false, now) testNote5 := makeTestNote(5, "Actually !1 and !1 are the same but !100 and !214 are not", false, now) testNote6 := makeTestNote(6, "!11 and !1 are simillar but !201 and !100 are not!", false, now) + testNote7 := makeTestNote(1, "Simillar to #9, may be solved in !004", false, now) parsedBody1 := downloader.convertMRReference(testNote1.Body) parsedBody2 := downloader.convertMRReference(testNote2.Body) @@ -751,6 +828,7 @@ func TestCommentBodyParser(t *testing.T) { parsedBody4 := downloader.convertMRReference(testNote4.Body) parsedBody5 := downloader.convertMRReference(testNote5.Body) parsedBody6 := downloader.convertMRReference(testNote6.Body) + parsedBody7 := downloader.convertMRReference(testNote7.Body) // Assuming a total of 20 comments + PRs assert.Equal(t, "Simillar to #9, may be solved in !14", parsedBody1) @@ -759,4 +837,5 @@ func TestCommentBodyParser(t *testing.T) { assert.Equal(t, "Closed by !11 and !24", parsedBody4) assert.Equal(t, "Actually !11 and !11 are the same but !110 and !224 are not", parsedBody5) assert.Equal(t, "!21 and !11 are simillar but !211 and !110 are not!", parsedBody6) + assert.Equal(t, "Simillar to #9, may be solved in !14", parsedBody7) } diff --git a/services/migrations/main_test.go b/services/migrations/main_test.go index d543bd6d9c..860483deed 100644 --- a/services/migrations/main_test.go +++ b/services/migrations/main_test.go @@ -5,6 +5,7 @@ package migrations import ( + "fmt" "testing" "time" @@ -109,7 +110,9 @@ func assertIssueEqual(t *testing.T, expected, actual *base.Issue) { func assertIssuesEqual(t *testing.T, expected, actual []*base.Issue) { if assert.Len(t, actual, len(expected)) { for i := range expected { - assertIssueEqual(t, expected[i], actual[i]) + t.Run(fmt.Sprintf("issue[%d]", i), func(t *testing.T) { + assertIssueEqual(t, expected[i], actual[i]) + }) } } } @@ -172,7 +175,6 @@ func assertReactionsEqual(t *testing.T, expected, actual []*base.Reaction) { func assertReleaseAssetEqual(t *testing.T, expected, actual *base.ReleaseAsset) { assert.Equal(t, expected.ID, actual.ID) assert.Equal(t, expected.Name, actual.Name) - assert.Equal(t, expected.ContentType, actual.ContentType) assert.Equal(t, expected.Size, actual.Size) assert.Equal(t, expected.DownloadCount, actual.DownloadCount) assertTimeEqual(t, expected.Created, actual.Created) @@ -181,9 +183,11 @@ func assertReleaseAssetEqual(t *testing.T, expected, actual *base.ReleaseAsset) } func assertReleaseAssetsEqual(t *testing.T, expected, actual []*base.ReleaseAsset) { - if assert.Len(t, actual, len(expected)) { + if assert.Len(t, actual, len(expected), "wrong number of assets") { for i := range expected { - assertReleaseAssetEqual(t, expected[i], actual[i]) + t.Run(fmt.Sprintf("asset[%d]", i), func(t *testing.T) { + assertReleaseAssetEqual(t, expected[i], actual[i]) + }) } } } @@ -204,9 +208,11 @@ func assertReleaseEqual(t *testing.T, expected, actual *base.Release) { } func assertReleasesEqual(t *testing.T, expected, actual []*base.Release) { - if assert.Len(t, actual, len(expected)) { + if assert.Len(t, actual, len(expected), "wrong number of releases") { for i := range expected { - assertReleaseEqual(t, expected[i], actual[i]) + t.Run(fmt.Sprintf("release[%d]", i), func(t *testing.T) { + assertReleaseEqual(t, expected[i], actual[i]) + }) } } } diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 index 8dac7b406b..041068c55b 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 @@ -1,23 +1,20 @@ Cache-Control: max-age=0, private, must-revalidate -Etag: W/"c77cec95a47ea2b28a897b9b9eaaf641" -Gitlab-Lb: haproxy-main-28-lb-gprd -Gitlab-Sv: api-gke-us-east1-b -Ratelimit-Reset: 1764067260 Cf-Cache-Status: MISS -Strict-Transport-Security: max-age=31536000 Content-Security-Policy: default-src 'none' -Ratelimit-Limit: 2000 -Ratelimit-Observed: 4 -Referrer-Policy: strict-origin-when-cross-origin -X-Runtime: 0.280463 Content-Type: application/json +Etag: W/"c121b3a20c1098563adf329ff75151ef" +Gitlab-Lb: haproxy-main-42-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 4 +Ratelimit-Remaining: 1996 +Ratelimit-Reset: 1771085820 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Remaining: 1996 -X-Gitlab-Meta: {"correlation_id":"9a40876c7564e0d9-ATL","version":"1"} -Set-Cookie: __cf_bm=pNVcnucqgoXcZjvxr101uQXpAxglmowlLAItA.WHiEE-1764067238-1.0.1.1-bHnsERU82S.3aXviQYZyZ.Wpz1M9bl64MxY81EF8r68DhKfk4q01V_P2K2xdnH2EisJA8NJCH8S6WRN17yBWvtpyv3KTgEM.fWZTzzVvsnE; path=/; expires=Tue, 25-Nov-25 11:10:38 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=IeTcO1.iXZQZ_rk.w1KsaEts1gdvZO2RzZzYRR6IKU0-1764067238254-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +X-Runtime: 0.265902 -{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:03:01.001Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"forked_from_project":{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":2,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:21:43.130Z","visibility":"public","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"}},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"service_desk_address":"contact-project+forgejo-test-repo-61363672-issue-@incoming.gitlab.com","can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"mr_default_target_self":false,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":1,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2025-11-25T09:21:03.121Z","ci_default_git_depth":50,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":false,"web_based_commit_signing_enabled":false,"permissions":{"project_access":{"access_level":40,"notification_level":3},"group_access":null}} \ No newline at end of file +{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","migration test","test"],"topics":["migration","migration test","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2026-02-13T20:46:12.772Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":true,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":false,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":2,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2026-02-14T16:16:08.902Z","ci_default_git_depth":50,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"web_based_commit_signing_enabled":false,"permissions":{"project_access":null,"group_access":{"access_level":50,"notification_level":3}}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 deleted file mode 100644 index c95d5fd2ea..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 +++ /dev/null @@ -1,30 +0,0 @@ -Ratelimit-Limit: 2000 -X-Gitlab-Meta: {"correlation_id":"9a405365d6794fc7-ATL","version":"1"} -X-Page: 1 -X-Per-Page: 2 -Set-Cookie: __cf_bm=C5GGirb47y1AnxdEybainR1wHe_wFq41P5zDjTZX3yk-1764065107-1.0.1.1-mWi3KtIRmcyLamp2D2O3UsEVFAAu65Kq6r.fkCp9g7iBN9NXkpBwglhkU0pH0XEoKCoY7qLFRA6dcjdYRqzU4Wrezc9nf_FvtZ1tDxbRLM4; path=/; expires=Tue, 25-Nov-25 10:35:07 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=DJAtB6RFRWI32R0nVIBcUFeqnT.fjNBWrZdi.MUzDds-1764065107320-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Link: ; rel="first", ; rel="last" -Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-43-lb-gprd -X-Content-Type-Options: nosniff -X-Runtime: 0.114443 -Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Ratelimit-Remaining: 1991 -Ratelimit-Observed: 9 -X-Next-Page: -X-Prev-Page: -X-Total-Pages: 1 -Cf-Cache-Status: MISS -Referrer-Policy: strict-origin-when-cross-origin -X-Frame-Options: SAMEORIGIN -Content-Type: application/json -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-b -Ratelimit-Reset: 1764065160 -Etag: W/"8a63dd18b47e217645efd63790d939b6" -Ratelimit-Name: throttle_authenticated_api -X-Total: 2 - -[{"id":28099429,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:19.487Z","updated_at":"2024-09-03T19:56:19.487Z","awardable_id":152568896,"awardable_type":"Issue","url":null},{"id":28099432,"name":"open_mouth","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:24.365Z","updated_at":"2024-09-03T19:56:24.365Z","awardable_id":152568896,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 index e480d6431f..e2fe469a67 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 @@ -1,30 +1,27 @@ -Content-Type: application/json -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Limit: 2000 -X-Total-Pages: 1 +Cache-Control: max-age=0, private, must-revalidate Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"8a63dd18b47e217645efd63790d939b6" +Gitlab-Lb: haproxy-main-31-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 15 +Ratelimit-Remaining: 1985 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 X-Per-Page: 3 X-Prev-Page: -Set-Cookie: __cf_bm=AMkW.FglpczGT7nCMi_moniL9P4E.UGt4JDm070vKFE-1764067240-1.0.1.1-3QZwxgak9dKmN8t8sAA11eCLyiWdDjbVaWuGfyVvF.bMk3qQb08X9.n7foHiwljxlG9XcXaGQLJ9RzqwPJGViCz2nTZw7my.wVKi4dECxaA; path=/; expires=Tue, 25-Nov-25 11:10:40 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=VDNJkuLs.DLPThrJdTl9P4NavYEsbxLAbkpfYeG_TIo-1764067240555-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Content-Security-Policy: default-src 'none' -Ratelimit-Remaining: 1991 -Ratelimit-Reset: 1764067260 -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"9a40877bd3c5e0d9-ATL","version":"1"} -X-Next-Page: -Vary: Origin, Accept-Encoding -Ratelimit-Observed: 9 -X-Page: 1 -Link: ; rel="first", ; rel="last" +X-Runtime: 0.080698 X-Total: 2 -Ratelimit-Name: throttle_authenticated_api -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -X-Runtime: 0.114023 -Etag: W/"8a63dd18b47e217645efd63790d939b6" -Gitlab-Lb: haproxy-main-38-lb-gprd +X-Total-Pages: 1 [{"id":28099429,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:19.487Z","updated_at":"2024-09-03T19:56:19.487Z","awardable_id":152568896,"awardable_type":"Issue","url":null},{"id":28099432,"name":"open_mouth","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:24.365Z","updated_at":"2024-09-03T19:56:24.365Z","awardable_id":152568896,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 deleted file mode 100644 index fba1ea703f..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 +++ /dev/null @@ -1,32 +0,0 @@ -X-Total: 2 -Content-Length: 2 -X-Per-Page: 2 -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Strict-Transport-Security: max-age=31536000 -Ratelimit-Observed: 10 -X-Runtime: 0.093808 -X-Total-Pages: 1 -Accept-Ranges: bytes -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Remaining: 1990 -X-Next-Page: -Set-Cookie: __cf_bm=krmSIgoXy70nwccNzKrKDrmGomsstoTv.pb2G609iS8-1764065107-1.0.1.1-O3bOtgk9Cm4h3Nr5ppRJDGdeQ7ojT70JRYEWnC7I2W8eegxfQG4mhNRRmmbsU86z9feGvE2FRtyPC8WcznS3cvzBO4v0i1K9bifxgfMT3Jg; path=/; expires=Tue, 25-Nov-25 10:35:07 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=3IXI51wbK6iOCjIgl35YHfmHOshYnQFoepGa8MPgbzQ-1764065107606-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Link: ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -Ratelimit-Limit: 2000 -Cf-Cache-Status: MISS -Gitlab-Sv: api-gke-us-east1-d -X-Prev-Page: -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -X-Frame-Options: SAMEORIGIN -Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-45-lb-gprd -Ratelimit-Reset: 1764065160 -X-Gitlab-Meta: {"correlation_id":"9a40536901af4fc7-ATL","version":"1"} -X-Page: 2 - -[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 deleted file mode 100644 index 34671df48b..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 +++ /dev/null @@ -1,30 +0,0 @@ -X-Content-Type-Options: nosniff -X-Page: 1 -X-Prev-Page: -X-Total-Pages: 3 -Gitlab-Lb: haproxy-main-49-lb-gprd -Ratelimit-Observed: 11 -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-b -Ratelimit-Limit: 2000 -X-Next-Page: 2 -X-Total: 6 -Vary: Origin, Accept-Encoding -Ratelimit-Remaining: 1989 -Ratelimit-Reset: 1764065160 -X-Frame-Options: SAMEORIGIN -X-Runtime: 0.145887 -Content-Security-Policy: default-src 'none' -X-Per-Page: 2 -Cf-Cache-Status: MISS -Etag: W/"46d402fdfea4626a5b918865ed2a21b3" -Link: ; rel="next", ; rel="first", ; rel="last" -Referrer-Policy: strict-origin-when-cross-origin -X-Gitlab-Meta: {"correlation_id":"9a40536ad3804fc7-ATL","version":"1"} -Set-Cookie: __cf_bm=iAflLFsTWXue0NdlWTclQNmHmKgpnpLwVGp9zRstYHA-1764065107-1.0.1.1-iBouQbArw5dudRhRG8Gc.oXAcwJckMJKbFw9UkTlVrUCMc8xwY52vD9JDp6LxvnCvrbT_TWiKhCL1tjvXy2.hS7lAOJwjoKLTE8Ilc8GPwg; path=/; expires=Tue, 25-Nov-25 10:35:07 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=Rcq3h31X5A4Y4I4o2L2rg7wfiVvTIFeAnA5MHEHeMtE-1764065107948-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Name: throttle_authenticated_api - -[{"id":28092934,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:50.310Z","updated_at":"2024-09-03T14:45:50.310Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092936,"name":"thumbsdown","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:51.174Z","updated_at":"2024-09-03T14:45:51.174Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 index 9fb6111c05..da1dddaddb 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 @@ -1,30 +1,27 @@ -Cf-Cache-Status: MISS -Gitlab-Lb: haproxy-main-56-lb-gprd -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Observed: 10 -X-Per-Page: 3 -Content-Security-Policy: default-src 'none' -Ratelimit-Limit: 2000 -Referrer-Policy: strict-origin-when-cross-origin -X-Total: 6 Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Remaining: 1990 -X-Gitlab-Meta: {"correlation_id":"9a40877dc542e0d9-ATL","version":"1"} -X-Total-Pages: 2 +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' Content-Type: application/json -Link: ; rel="next", ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -X-Next-Page: 2 -X-Page: 1 -X-Runtime: 0.094421 Etag: W/"a7f74b6635cdf940405e20b5627e092a" +Gitlab-Lb: haproxy-main-29-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Link: ; rel="next", ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 11 +Ratelimit-Remaining: 1989 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN +X-Next-Page: 2 +X-Page: 1 +X-Per-Page: 3 X-Prev-Page: -Set-Cookie: __cf_bm=1pVUk5OSzwbz4O8dsFsRnozXAyop91pPTEBHeWWpDnU-1764067240-1.0.1.1-5IYX.blo82vcD5UKTwXG7ln4ys9VsT8BYI8x9c9lF2Q4yBTQxA8DUvNouhqDG6Ge_Ps8oVjgbQrYPMb7Jt2zn5Xh3jOtS9ulH3q7ITiR7ek; path=/; expires=Tue, 25-Nov-25 11:10:40 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=gEvp_O9POy6sfr63Hx3Ama.RZa_hYvDk4vkRpBHycmE-1764067240834-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Reset: 1764067260 +X-Runtime: 0.087002 +X-Total: 6 +X-Total-Pages: 2 [{"id":28092934,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:50.310Z","updated_at":"2024-09-03T14:45:50.310Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092936,"name":"thumbsdown","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:51.174Z","updated_at":"2024-09-03T14:45:51.174Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092944,"name":"laughing","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:00.936Z","updated_at":"2024-09-03T14:46:00.936Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 deleted file mode 100644 index ac0ac301b7..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 +++ /dev/null @@ -1,30 +0,0 @@ -Etag: W/"15557729ecccd67be90f7632b49d20e5" -Gitlab-Sv: api-gke-us-east1-d -X-Content-Type-Options: nosniff -X-Runtime: 0.176046 -Link: ; rel="prev", ; rel="next", ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -Ratelimit-Observed: 12 -Ratelimit-Reset: 1764065160 -Cf-Cache-Status: MISS -X-Gitlab-Meta: {"correlation_id":"9a40536cf55d4fc7-ATL","version":"1"} -X-Total-Pages: 3 -Content-Security-Policy: default-src 'none' -Referrer-Policy: strict-origin-when-cross-origin -X-Per-Page: 2 -X-Prev-Page: 1 -X-Total: 6 -Content-Type: application/json -Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-39-lb-gprd -Ratelimit-Name: throttle_authenticated_api -X-Next-Page: 3 -X-Page: 2 -Ratelimit-Limit: 2000 -X-Frame-Options: SAMEORIGIN -Set-Cookie: __cf_bm=6PlKBj6oiuq6_N7epiS8Xm97vcaMAb9oDDhC1roPYgY-1764065108-1.0.1.1-XesydYL7bwOpVgX.ZNZLcgr8fZUWm36QW2vpzPhzl0G3ok_ebr4MVuM_XldppYra8PuF_9X3ErU.u0k.aVkhCwJbtNwJgxrtTycf3bA5gXc; path=/; expires=Tue, 25-Nov-25 10:35:08 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=ww6AGjv1O4W9g8e2r75FKUoE_C9tXI.9LU3S5Ldwk3Q-1764065108312-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Ratelimit-Remaining: 1988 - -[{"id":28092944,"name":"laughing","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:00.936Z","updated_at":"2024-09-03T14:46:00.936Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092948,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:09.593Z","updated_at":"2024-09-03T14:46:09.593Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 index c885b1e7ad..9310ff08ae 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 @@ -1,30 +1,27 @@ -Strict-Transport-Security: max-age=31536000 -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Observed: 11 -Ratelimit-Remaining: 1989 -Set-Cookie: __cf_bm=9AE8CpIjrEnerJtOH7BLyO_OXlXzIs0gOxe3EtqIUuA-1764067241-1.0.1.1-Qs3bffq8SPyos4SyAbcK_5xcCd8OmKP52qPTL7ta5sxW7DtrWmeVuW8GkH.7PLS4D8kxUIGLhr81eTmtH_pcv9Q6Bq_9ACQVIRXQBoDsjXI; path=/; expires=Tue, 25-Nov-25 11:10:41 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=7LR1RtBEpFtdvYmrN.poZNibwl0WEel7bAmYSK4txoU-1764067241094-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Prev-Page: 1 -Cf-Cache-Status: MISS -Ratelimit-Limit: 2000 -Ratelimit-Reset: 1764067260 -X-Runtime: 0.081401 -X-Total: 6 -Gitlab-Lb: haproxy-main-28-lb-gprd -X-Content-Type-Options: nosniff -Etag: W/"412dc0049cf530d17cba7741291c3200" -Vary: Origin, Accept-Encoding -Referrer-Policy: strict-origin-when-cross-origin -X-Next-Page: -X-Per-Page: 3 Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS Content-Security-Policy: default-src 'none' -X-Total-Pages: 2 -Link: ; rel="prev", ; rel="first", ; rel="last" -Gitlab-Sv: api-gke-us-east1-b -X-Frame-Options: SAMEORIGIN -X-Page: 2 Content-Type: application/json -X-Gitlab-Meta: {"correlation_id":"9a40877f76b0e0d9-ATL","version":"1"} +Etag: W/"412dc0049cf530d17cba7741291c3200" +Gitlab-Lb: haproxy-main-45-lb-gprd +Gitlab-Sv: gke-cny-api +Link: ; rel="prev", ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 12 +Ratelimit-Remaining: 1988 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 2 +X-Per-Page: 3 +X-Prev-Page: 1 +X-Runtime: 0.072203 +X-Total: 6 +X-Total-Pages: 2 [{"id":28092948,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:09.593Z","updated_at":"2024-09-03T14:46:09.593Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092953,"name":"confused","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:18.191Z","updated_at":"2024-09-03T14:46:18.191Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092962,"name":"hearts","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:35.367Z","updated_at":"2024-09-03T14:46:35.367Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 deleted file mode 100644 index d016c95c8f..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 +++ /dev/null @@ -1,30 +0,0 @@ -Ratelimit-Reset: 1764065160 -X-Total: 6 -X-Total-Pages: 3 -Gitlab-Lb: haproxy-main-03-lb-gprd -X-Gitlab-Meta: {"correlation_id":"9a40536f57014fc7-ATL","version":"1"} -X-Runtime: 0.292482 -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-d -Ratelimit-Remaining: 1987 -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -Cf-Cache-Status: MISS -Ratelimit-Name: throttle_authenticated_api -X-Frame-Options: SAMEORIGIN -Etag: W/"ceed6f177d5f7e84961ad604a8cddc35" -X-Page: 3 -X-Prev-Page: 2 -Content-Type: application/json -Link: ; rel="prev", ; rel="first", ; rel="last" -Ratelimit-Limit: 2000 -Set-Cookie: __cf_bm=t2tUXdhLqCPmsw4U1LbZRu_gDoywVJmKT1x66aIcKoA-1764065108-1.0.1.1-Q6CudjcxQoHnyXHzHcIH4s_2Pte9_SriSix3lG7t79O.7er2sS7Ltg32UG33iHJMoGh1FRMTXnlFJA3g6mPm3vs2T.Z7rx8LjInyQ98AdCA; path=/; expires=Tue, 25-Nov-25 10:35:08 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=L3s_nmm3ScmGh8cr3YisKfgCl7xvN0vJNxfsvMYEpzk-1764065108869-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cache-Control: max-age=0, private, must-revalidate -Content-Security-Policy: default-src 'none' -Ratelimit-Observed: 13 -X-Next-Page: -X-Per-Page: 2 -Strict-Transport-Security: max-age=31536000 - -[{"id":28092953,"name":"confused","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:18.191Z","updated_at":"2024-09-03T14:46:18.191Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092962,"name":"hearts","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:35.367Z","updated_at":"2024-09-03T14:46:35.367Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 index 7b78f53c9a..222ae67c3d 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 @@ -1,32 +1,29 @@ -Content-Type: application/json -Gitlab-Lb: haproxy-main-53-lb-gprd -Ratelimit-Name: throttle_authenticated_api -X-Prev-Page: -Ratelimit-Reset: 1764067260 -Cache-Control: max-age=0, private, must-revalidate -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Remaining: 1988 -X-Gitlab-Meta: {"correlation_id":"9a408781100ee0d9-ATL","version":"1"} -Set-Cookie: __cf_bm=ERtdJNpQThaSjqUa1.mZTqn7n0q1_fbzhUfqnAuidrE-1764067241-1.0.1.1-SIVaHdxaT7VFCCtSClSPrkBAOkMKdqMo_6H.18diW8wVohWWzdQkGK1lgp7NSFWYB.9fUd08EGQM4crpdR0vk8L6Lx9vi5tSwI0F9El27Cs; path=/; expires=Tue, 25-Nov-25 11:10:41 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=TWm8WMj9YPkP1A9SyC.xy86EYVqWA5BmefQUd0h0Bh8-1764067241497-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Length: 2 Accept-Ranges: bytes +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-32-lb-gprd +Gitlab-Sv: api-gke-us-east1-c Link: ; rel="first", ; rel="last" Ratelimit-Limit: 2000 -Vary: Origin, Accept-Encoding -Content-Security-Policy: default-src 'none' -X-Runtime: 0.199084 -Cf-Cache-Status: MISS -X-Next-Page: +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 13 +Ratelimit-Remaining: 1987 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin Strict-Transport-Security: max-age=31536000 -Ratelimit-Observed: 12 +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 3 X-Per-Page: 3 +X-Prev-Page: +X-Runtime: 0.069015 X-Total: 6 X-Total-Pages: 2 -Referrer-Policy: strict-origin-when-cross-origin -X-Frame-Options: SAMEORIGIN -X-Page: 3 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 deleted file mode 100644 index ebb294094d..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 +++ /dev/null @@ -1,32 +0,0 @@ -X-Total-Pages: 3 -Set-Cookie: __cf_bm=XEiSKl80KAa5zod94SawbVosALj1cNcQ_eq8bE3jYLU-1764065109-1.0.1.1-hnWNajuOroFE7mHA4HInOTO2nVGBGHu9yC6P4yIQZyPkA0jzn2v2QQW3QTNox6wumnUAuRkNfFUCG9tzx2wlteVA0JCboGsGmJY2FADr1LA; path=/; expires=Tue, 25-Nov-25 10:35:09 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=BVV2bFUiotodstANTLeIUoIFj5yU0lMB1WpZbkGzD9Q-1764065109254-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Observed: 14 -Ratelimit-Reset: 1764065160 -X-Page: 4 -Cf-Cache-Status: MISS -Link: ; rel="first", ; rel="last" -Ratelimit-Limit: 2000 -Ratelimit-Remaining: 1986 -X-Content-Type-Options: nosniff -Accept-Ranges: bytes -X-Frame-Options: SAMEORIGIN -Strict-Transport-Security: max-age=31536000 -Content-Security-Policy: default-src 'none' -X-Next-Page: -Content-Type: application/json -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Gitlab-Lb: haproxy-main-53-lb-gprd -X-Total: 6 -Ratelimit-Name: throttle_authenticated_api -X-Per-Page: 2 -Content-Length: 2 -Referrer-Policy: strict-origin-when-cross-origin -X-Gitlab-Meta: {"correlation_id":"9a405372b1ba4fc7-ATL","version":"1"} -Cache-Control: max-age=0, private, must-revalidate -X-Prev-Page: -X-Runtime: 0.198149 - -[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 index 05e407d106..4f150ff0e5 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 @@ -1,30 +1,27 @@ -Link: ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -X-Next-Page: -Etag: W/"3f43dfe90694977cf41e442db7d78f76" -Ratelimit-Observed: 14 -Ratelimit-Remaining: 1986 -X-Gitlab-Meta: {"correlation_id":"9a408786746ce0d9-ATL","version":"1"} -X-Runtime: 0.160743 -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-51-lb-gprd -Gitlab-Sv: api-gke-us-east1-d -Referrer-Policy: strict-origin-when-cross-origin -X-Page: 1 -Cf-Cache-Status: MISS -Ratelimit-Limit: 2000 -X-Content-Type-Options: nosniff -X-Per-Page: 100 -X-Total-Pages: 1 -Content-Security-Policy: default-src 'none' -Ratelimit-Reset: 1764067260 -X-Prev-Page: Cache-Control: max-age=0, private, must-revalidate -X-Frame-Options: SAMEORIGIN +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' Content-Type: application/json +Etag: W/"f36dea488bdfeaf39734c472f94fed6b" +Gitlab-Lb: haproxy-main-15-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 Ratelimit-Name: throttle_authenticated_api -X-Total: 2 -Set-Cookie: __cf_bm=yLb0tijb_h6IcP8N5b9_gCUI2Oax.oodlJg5G_org7w-1764067242-1.0.1.1-96nM1EZJz3goO7FuhYyOprR4N67BL_8FlZ8L9TgGmqW2umM_h1xDE8tQNKLmthWt.CBQIfxBfNs1DXkxSv5WLkJ_450s8QqebqHYeHLWzvw; path=/; expires=Tue, 25-Nov-25 11:10:42 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=FKADqckdKPYzioe9Z2r5_0EEWR7cMjHX60K9UT3DE2Q-1764067242301-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Ratelimit-Observed: 16 +Ratelimit-Remaining: 1984 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.205651 +X-Total: 3 +X-Total-Pages: 1 -[{"id":"8d6017e7426130502cd94fff207224b8a98efabc","individual_note":true,"notes":[{"id":2087994191,"type":null,"body":"This is a comment","author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:20.848Z","updated_at":"2024-09-03T14:45:46.592Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"c721de2d3f2f0fe9a40005228f50d8c8d8131581","individual_note":true,"notes":[{"id":2087994632,"type":null,"body":"A second comment","author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:30.059Z","updated_at":"2024-09-03T14:45:30.059Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]}] \ No newline at end of file +[{"id":"8d6017e7426130502cd94fff207224b8a98efabc","individual_note":true,"notes":[{"id":2087994191,"type":null,"body":"This is a comment","author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:20.848Z","updated_at":"2024-09-03T14:45:46.592Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"c721de2d3f2f0fe9a40005228f50d8c8d8131581","individual_note":true,"notes":[{"id":2087994632,"type":null,"body":"A second comment","author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:30.059Z","updated_at":"2024-09-03T14:45:30.059Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"6958a4530864f0f8c546f33e25bf09d4a11e0bd7","individual_note":true,"notes":[{"id":3083417271,"type":null,"body":"with an image ![image](/uploads/3756af8a4893bea08b99536df000e932/image.png){width=217 height=280}","author":{"id":2005797,"username":"oliverpool","public_email":"","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"created_at":"2026-02-13T20:46:11.841Z","updated_at":"2026-02-13T20:46:11.841Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 index 201e5cd4dd..d5ed7c28a9 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 @@ -1,30 +1,27 @@ -Vary: Origin, Accept-Encoding -Referrer-Policy: strict-origin-when-cross-origin -X-Next-Page: -X-Per-Page: 100 -X-Prev-Page: -Strict-Transport-Security: max-age=31536000 -Ratelimit-Reset: 1764067260 -Set-Cookie: __cf_bm=3hSvaVOg9Df1RydUBhWv7dmQ6AHasvpAX8RiMf_0IMk-1764067242-1.0.1.1-EFnF8p7l6vPWO.7t.INm4jiU4zIX2q26I0zgX.CvdmU0HESjVmD2HuJVzh_X4vWOmISdYa05_.IJt08.yQ25DsMlnJCYBtAuNHSeGCSl.Lg; path=/; expires=Tue, 25-Nov-25 11:10:42 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=C3.D.QMDCTlck3o2O1IZRIpjzLAzJF.V4LfqOvfHkh0-1764067242832-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Link: ; rel="first", ; rel="last" -X-Total-Pages: 1 Cache-Control: max-age=0, private, must-revalidate -Etag: W/"2cf51cc8586d98d271cacf42f33dae75" -Content-Security-Policy: default-src 'none' -X-Runtime: 0.123392 -X-Frame-Options: SAMEORIGIN -X-Page: 1 -X-Total: 1 Cf-Cache-Status: MISS -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Observed: 15 -X-Content-Type-Options: nosniff -X-Gitlab-Meta: {"correlation_id":"9a408788a63de0d9-ATL","version":"1"} -Gitlab-Lb: haproxy-main-53-lb-gprd +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"2cf51cc8586d98d271cacf42f33dae75" +Gitlab-Lb: haproxy-main-09-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="first", ; rel="last" Ratelimit-Limit: 2000 Ratelimit-Name: throttle_authenticated_api -Ratelimit-Remaining: 1985 +Ratelimit-Observed: 17 +Ratelimit-Remaining: 1983 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.107523 +X-Total: 1 +X-Total-Pages: 1 [{"id":241837962,"user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:43:10.947Z","resource_type":"Issue","resource_id":152568900,"source_commit":null,"source_merge_request_id":null,"state":"closed"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 index 4659d0f5ab..13a4e37677 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 @@ -1,32 +1,29 @@ -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Ratelimit-Remaining: 1987 -Referrer-Policy: strict-origin-when-cross-origin -X-Frame-Options: SAMEORIGIN -Vary: Origin, Accept-Encoding -Set-Cookie: __cf_bm=_PiVkq.l17DijVAdAtfuSQ4GuCtCOOl4czL6yY_6g9E-1764067241-1.0.1.1-QlPR96ULIEw44gI9D5uugVOR0hpmBZeL5BOF.IuALd9NwlgztPD8sH2EjiaF8LhWXfarSxmi1I_02t4cRnqlZZJmgCD3nqaOY1DEr2Jd8J8; path=/; expires=Tue, 25-Nov-25 11:10:41 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=5Y9fvzgH44fmICzIWOGlsiNLueIloiAp7j_1MuyHfL0-1764067241958-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Content-Type-Options: nosniff -X-Prev-Page: -Content-Type: application/json -Cf-Cache-Status: MISS Accept-Ranges: bytes Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Name: throttle_authenticated_api -X-Page: 1 -X-Total: 0 +Cf-Cache-Status: MISS Content-Length: 2 -Gitlab-Sv: api-gke-us-east1-d -Ratelimit-Reset: 1764067260 -X-Runtime: 0.069144 Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-39-lb-gprd -Ratelimit-Limit: 2000 -X-Gitlab-Meta: {"correlation_id":"9a4087839220e0d9-ATL","version":"1"} -X-Next-Page: -Ratelimit-Observed: 13 -X-Per-Page: 3 +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-14-lb-gprd +Gitlab-Sv: api-gke-us-east1-c Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 10 +Ratelimit-Remaining: 1990 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 3 +X-Prev-Page: +X-Runtime: 0.070635 +X-Total: 0 X-Total-Pages: 1 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 index c55e369b30..9c83508ab1 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 @@ -1,30 +1,27 @@ -Strict-Transport-Security: max-age=31536000 -Etag: W/"d25ee844965ed283636474d7b1195b57" -Ratelimit-Observed: 16 -Ratelimit-Reset: 1764067260 -X-Content-Type-Options: nosniff -X-Prev-Page: -X-Total: 1 -Set-Cookie: __cf_bm=YkiNZjRNirt6PowNRQAhJbAZ1pSohmmpGiWle8vgu8U-1764067243-1.0.1.1-TJDOjL6q1b4S_JjFxO6NHWpxJOK77U_qAYESfRAOSIZjbTTqJ3NAThC009W5Ll0R7aiRVA7d1XnHN1AQz0zaZ2X4M0Ws9FePwJD90gaAZns; path=/; expires=Tue, 25-Nov-25 11:10:43 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=vsL8nPGLjnwrlB9N1iy79xlUSdinKj45qcTl7NrXo5E-1764067243230-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Name: throttle_authenticated_api -Referrer-Policy: strict-origin-when-cross-origin -Content-Type: application/json -Ratelimit-Limit: 2000 -X-Page: 1 Cache-Control: max-age=0, private, must-revalidate -Vary: Origin, Accept-Encoding -Ratelimit-Remaining: 1984 -X-Next-Page: -X-Runtime: 0.199882 -X-Per-Page: 100 -X-Total-Pages: 1 Cf-Cache-Status: MISS -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"9a40878bf119e0d9-ATL","version":"1"} Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-14-lb-gprd +Content-Type: application/json +Etag: W/"d25ee844965ed283636474d7b1195b57" +Gitlab-Lb: haproxy-main-20-lb-gprd +Gitlab-Sv: api-gke-us-east1-c Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 18 +Ratelimit-Remaining: 1982 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.167168 +X-Total: 1 +X-Total-Pages: 1 [{"id":"36545838ff9cc7d13fb129f2a97ff49297299158","individual_note":true,"notes":[{"id":2911821024,"type":null,"body":"No actually its !1","author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"created_at":"2025-11-25T09:49:50.899Z","updated_at":"2025-11-25T09:49:50.899Z","system":false,"noteable_id":177633591,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":3,"commands_changes":{}}]}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 index 6e8c1d9c81..328da03915 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 @@ -1,32 +1,29 @@ -X-Total-Pages: 1 Accept-Ranges: bytes -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Link: ; rel="first", ; rel="last" -Ratelimit-Observed: 17 -X-Content-Type-Options: nosniff -X-Gitlab-Meta: {"correlation_id":"9a40878e7365e0d9-ATL","version":"1"} -X-Per-Page: 100 -Set-Cookie: __cf_bm=K3TOUn2vDaz1qInIfA3ot2QfDGciipMeNz7mTLiUHew-1764067243-1.0.1.1-emtayPBYQbA_Hcjg3SJRaDfSnu1LMo0AwU3oLUo88E9kLsWYkTqQJbtaEa0vquShox_HRWnGFp9s6cIg_iVaPfwR4bzUnIHzO0GNMfRcdls; path=/; expires=Tue, 25-Nov-25 11:10:43 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=Jcc7jNquyhw_7ru6wi24nRmm1pryvsiBqi_0wTQQxNY-1764067243527-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Gitlab-Lb: haproxy-main-49-lb-gprd -X-Next-Page: -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Reset: 1764067260 -X-Total: 0 -Vary: Origin, Accept-Encoding -Content-Security-Policy: default-src 'none' -Ratelimit-Remaining: 1983 -X-Runtime: 0.113354 Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Referrer-Policy: strict-origin-when-cross-origin -Content-Type: application/json -Content-Length: 2 Cf-Cache-Status: MISS -Gitlab-Sv: api-gke-us-east1-b +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-05-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Link: ; rel="first", ; rel="last" Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 19 +Ratelimit-Remaining: 1981 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN -X-Prev-Page: +X-Next-Page: X-Page: 1 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.116312 +X-Total: 0 +X-Total-Pages: 1 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F4%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F4%2Faward_emoji%3Fpage=1&per_page=3 new file mode 100644 index 0000000000..03cdff2094 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F4%2Faward_emoji%3Fpage=1&per_page=3 @@ -0,0 +1,29 @@ +Accept-Ranges: bytes +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-58-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 9 +Ratelimit-Remaining: 1991 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 3 +X-Prev-Page: +X-Runtime: 0.059838 +X-Total: 0 +X-Total-Pages: 1 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=1&per_page=3&sort=desc&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=1&per_page=3&sort=desc&state=all new file mode 100644 index 0000000000..5888a3279b --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=1&per_page=3&sort=desc&state=all @@ -0,0 +1,27 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"219f33a99593d492e262065df734c743" +Gitlab-Lb: haproxy-main-45-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="next", ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 8 +Ratelimit-Remaining: 1992 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: 2 +X-Page: 1 +X-Per-Page: 3 +X-Prev-Page: +X-Runtime: 0.135940 +X-Total: 4 +X-Total-Pages: 2 + +[{"id":178287958,"iid":4,"project_id":61363672,"title":"Missing \"migration_test\" and \"migration_test_migration_test_migration_test\" topic","description":"This is required for https://codeberg.org/forgejo/forgejo/pulls/10336.","state":"opened","created_at":"2025-12-06T14:02:59.995Z","updated_at":"2025-12-06T15:04:37.324Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":29018602,"username":"amadaluzia","public_email":"amadaluzia@disroot.org","name":"Artur Manuel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/66b976e59f1d5d1938ea360b9cc09127ddf982c2452fdf106f4a9f0c7e3f7175?s=80\u0026d=identicon","web_url":"https://gitlab.com/amadaluzia"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"start_date":null,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/4","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/4","notes":"https://gitlab.com/api/v4/projects/61363672/issues/4/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/4/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#4","relative":"#4","full":"forgejo/test_repo#4"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":177633591,"iid":3,"project_id":61363672,"title":"Fix plz","description":"Can we do something about it? !2 is maybe related to that.","state":"opened","created_at":"2025-11-25T09:49:31.991Z","updated_at":"2025-11-25T09:49:31.991Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"type":"ISSUE","assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"downvotes":0,"start_date":null,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/3","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/3","notes":"https://gitlab.com/api/v4/projects/61363672/issues/3/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/3/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#3","relative":"#3","full":"forgejo/test_repo#3"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":152568900,"iid":2,"project_id":61363672,"title":"Test issue","description":"This is test issue 2, do not touch!","state":"closed","created_at":"2024-09-03T14:42:35.371Z","updated_at":"2026-02-13T20:46:11.889Z","closed_at":"2024-09-03T14:43:10.906Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["duplicate"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":3,"merge_requests_count":0,"upvotes":1,"downvotes":1,"start_date":null,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/2","notes":"https://gitlab.com/api/v4/projects/61363672/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=2&per_page=3&sort=desc&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=2&per_page=3&sort=desc&state=all new file mode 100644 index 0000000000..93174225cd --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Forder_by=created_at&page=2&per_page=3&sort=desc&state=all @@ -0,0 +1,27 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"26480a02f633f15960a2189bbf83f74d" +Gitlab-Lb: haproxy-main-12-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="prev", ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 14 +Ratelimit-Remaining: 1986 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 2 +X-Per-Page: 3 +X-Prev-Page: 1 +X-Runtime: 0.116035 +X-Total: 4 +X-Total-Pages: 2 + +[{"id":152568896,"iid":1,"project_id":61363672,"title":"Please add an animated gif icon to the merge button","description":"I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:","state":"closed","created_at":"2024-09-03T14:42:34.924Z","updated_at":"2024-09-03T14:48:43.756Z","closed_at":"2024-09-03T14:43:10.708Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["bug","discussion"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":1,"downvotes":0,"start_date":null,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/1","notes":"https://gitlab.com/api/v4/projects/61363672/issues/1/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/1/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#1","relative":"#1","full":"forgejo/test_repo#1"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all deleted file mode 100644 index 3281b83fc4..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all +++ /dev/null @@ -1,30 +0,0 @@ -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-08-lb-gprd -Ratelimit-Limit: 2000 -X-Content-Type-Options: nosniff -Content-Type: application/json -Etag: W/"fed6a858b8cd04cce298928641bdbf91" -Ratelimit-Name: throttle_authenticated_api -X-Total: 3 -Set-Cookie: __cf_bm=56WriCYT.4x.bhoJPAbtvhcoXjX.hSJZSxyA5n4RgGI-1764065106-1.0.1.1-6X71GaEn1440OUYNQyEtihb2G6vdIAldNl8MmJSA8B8vdpeLOu6wJjctKFZf1p4I_We9_fFUHF6bJxrhnd5L1w60cfZKL..QHzcglCDhYbA; path=/; expires=Tue, 25-Nov-25 10:35:06 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=njTrSjqzKoVc9pRMPI0tC9D3oUEVFwisFK8ERC4hPzQ-1764065106798-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Ratelimit-Remaining: 1992 -X-Gitlab-Meta: {"correlation_id":"9a40536354284fc7-ATL","version":"1"} -X-Per-Page: 2 -Link: ; rel="next", ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -Referrer-Policy: strict-origin-when-cross-origin -X-Frame-Options: SAMEORIGIN -X-Page: 1 -Ratelimit-Reset: 1764065160 -X-Next-Page: 2 -X-Total-Pages: 2 -Content-Security-Policy: default-src 'none' -X-Prev-Page: -X-Runtime: 0.164380 -Cf-Cache-Status: MISS -Cache-Control: max-age=0, private, must-revalidate -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Observed: 8 - -[{"id":152568896,"iid":1,"project_id":61363672,"title":"Please add an animated gif icon to the merge button","description":"I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:","state":"closed","created_at":"2024-09-03T14:42:34.924Z","updated_at":"2024-09-03T14:48:43.756Z","closed_at":"2024-09-03T14:43:10.708Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["bug","discussion"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":1,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/1","notes":"https://gitlab.com/api/v4/projects/61363672/issues/1/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/1/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#1","relative":"#1","full":"forgejo/test_repo#1"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":152568900,"iid":2,"project_id":61363672,"title":"Test issue","description":"This is test issue 2, do not touch!","state":"closed","created_at":"2024-09-03T14:42:35.371Z","updated_at":"2024-09-03T20:03:43.536Z","closed_at":"2024-09-03T14:43:10.906Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["duplicate"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":2,"merge_requests_count":0,"upvotes":1,"downvotes":1,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/2","notes":"https://gitlab.com/api/v4/projects/61363672/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all deleted file mode 100644 index 15ae79e7cb..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all +++ /dev/null @@ -1,30 +0,0 @@ -Vary: Origin, Accept-Encoding -Ratelimit-Limit: 2000 -X-Frame-Options: SAMEORIGIN -Ratelimit-Name: throttle_authenticated_api -X-Page: 1 -X-Per-Page: 3 -X-Prev-Page: -X-Total-Pages: 1 -Ratelimit-Remaining: 1992 -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -X-Next-Page: -Ratelimit-Reset: 1764067260 -X-Runtime: 0.227834 -X-Total: 3 -Gitlab-Lb: haproxy-main-23-lb-gprd -X-Gitlab-Meta: {"correlation_id":"9a408779112ee0d9-ATL","version":"1"} -Link: ; rel="first", ; rel="last" -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-c -Set-Cookie: __cf_bm=EQ7pNoZane3xZqZxCf03mAsOGNucyrqojo9wPP4ChLM-1764067240-1.0.1.1-4ICPtyEd80UCX5bM6Pt8v544OsY1V18pcsukJmXJPhb1L13ezQ1ewpmJtxd2DTS7f_.25GTrVvYfuSVBv4FKp.yuXWHEeTpuHVlaqQnByNY; path=/; expires=Tue, 25-Nov-25 11:10:40 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=1Q7FFLgLU1b0P.8Xf.1UYduw1IUBJQTNRCeXyNRWlCs-1764067240233-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cf-Cache-Status: MISS -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"7799d3664530e11a655130b629f46644" -Content-Security-Policy: default-src 'none' -Content-Type: application/json -Ratelimit-Observed: 8 - -[{"id":152568896,"iid":1,"project_id":61363672,"title":"Please add an animated gif icon to the merge button","description":"I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:","state":"closed","created_at":"2024-09-03T14:42:34.924Z","updated_at":"2024-09-03T14:48:43.756Z","closed_at":"2024-09-03T14:43:10.708Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["bug","discussion"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":1,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/1","notes":"https://gitlab.com/api/v4/projects/61363672/issues/1/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/1/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#1","relative":"#1","full":"forgejo/test_repo#1"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":152568900,"iid":2,"project_id":61363672,"title":"Test issue","description":"This is test issue 2, do not touch!","state":"closed","created_at":"2024-09-03T14:42:35.371Z","updated_at":"2024-09-03T20:03:43.536Z","closed_at":"2024-09-03T14:43:10.906Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["duplicate"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":2,"merge_requests_count":0,"upvotes":1,"downvotes":1,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/2","notes":"https://gitlab.com/api/v4/projects/61363672/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":177633591,"iid":3,"project_id":61363672,"title":"Fix plz","description":"Can we do something about it? !2 is maybe related to that.","state":"opened","created_at":"2025-11-25T09:49:31.991Z","updated_at":"2025-11-25T09:49:31.991Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"type":"ISSUE","assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/3","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/3","notes":"https://gitlab.com/api/v4/projects/61363672/issues/3/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/3/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#3","relative":"#3","full":"forgejo/test_repo#3"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 index a9040ca9c6..a9481f5bf6 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 @@ -1,30 +1,27 @@ -Etag: W/"91f61a44ed534ef7d26e391dbef8dc0a" -Strict-Transport-Security: max-age=31536000 -X-Page: 1 -X-Prev-Page: -Ratelimit-Observed: 6 -X-Gitlab-Meta: {"correlation_id":"9a408773b4a6e0d9-ATL","version":"1"} -X-Next-Page: -X-Total: 11 -Set-Cookie: __cf_bm=j7aaqO7rO5ziUIdQvf3RVOCy1YoqvZ3PMMn1F62gies-1764067239-1.0.1.1-O7tT2VIiDucsyQjuWn1XLbewuJ4MmW97cRVANB7hdyWUzZpBkjvWpeR7MtctRTLHGgNDSjZ4cB8rX_vr7.zxtEJNM0LOGN.YT_oQoCMABHs; path=/; expires=Tue, 25-Nov-25 11:10:39 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=ym04h_vUzr0khxRVeGrqFkX54HQowOMaSiPIyov7_dU-1764067239516-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Total-Pages: 1 Cache-Control: max-age=0, private, must-revalidate -Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-49-lb-gprd -Referrer-Policy: strict-origin-when-cross-origin -Content-Type: application/json -Ratelimit-Limit: 2000 -X-Frame-Options: SAMEORIGIN -X-Runtime: 0.141755 -Link: ; rel="first", ; rel="last" -Ratelimit-Name: throttle_authenticated_api -X-Content-Type-Options: nosniff -X-Per-Page: 100 -Vary: Origin, Accept-Encoding -Ratelimit-Remaining: 1994 -Ratelimit-Reset: 1764067260 -Gitlab-Sv: api-gke-us-east1-b Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"977ad54e33d2b62b959abfb2a9b801f3" +Gitlab-Lb: haproxy-main-57-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 6 +Ratelimit-Remaining: 1994 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.162398 +X-Total: 11 +X-Total-Pages: 1 -[{"id":36554072,"name":"bug","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","subscribed":false,"priority":null,"is_project_label":true},{"id":36554074,"name":"confirmed","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","subscribed":false,"priority":null,"is_project_label":true},{"id":36554073,"name":"critical","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","subscribed":false,"priority":null,"is_project_label":true},{"id":36554077,"name":"discussion","description":null,"description_html":"","text_color":"#FFFFFF","color":"#428bca","subscribed":false,"priority":null,"is_project_label":true},{"id":36554075,"name":"documentation","description":null,"description_html":"","text_color":"#1F1E24","color":"#f0ad4e","subscribed":false,"priority":null,"is_project_label":true},{"id":36556606,"name":"duplicate","description":"","description_html":"","text_color":"#FFFFFF","color":"#7F8C8D","subscribed":false,"priority":null,"is_project_label":true},{"id":36554079,"name":"enhancement","description":null,"description_html":"","text_color":"#FFFFFF","color":"#5cb85c","subscribed":false,"priority":null,"is_project_label":true},{"id":36554078,"name":"suggestion","description":null,"description_html":"","text_color":"#FFFFFF","color":"#428bca","subscribed":false,"priority":null,"is_project_label":true},{"id":36554076,"name":"support","description":null,"description_html":"","text_color":"#1F1E24","color":"#f0ad4e","subscribed":false,"priority":null,"is_project_label":true},{"id":36554080,"name":"test-scope::label0","description":"scoped label","description_html":"scoped label","text_color":"#FFFFFF","color":"#6699cc","subscribed":false,"priority":null,"is_project_label":true},{"id":36554094,"name":"test-scope::label1","description":"","description_html":"","text_color":"#FFFFFF","color":"#dc143c","subscribed":false,"priority":null,"is_project_label":true}] \ No newline at end of file +[{"id":36554072,"name":"bug","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554074,"name":"confirmed","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554073,"name":"critical","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554077,"name":"discussion","description":null,"description_html":"","text_color":"#FFFFFF","color":"#428bca","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554075,"name":"documentation","description":null,"description_html":"","text_color":"#1F1E24","color":"#f0ad4e","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36556606,"name":"duplicate","description":"","description_html":"","text_color":"#FFFFFF","color":"#7F8C8D","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554079,"name":"enhancement","description":null,"description_html":"","text_color":"#FFFFFF","color":"#5cb85c","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554078,"name":"suggestion","description":null,"description_html":"","text_color":"#FFFFFF","color":"#428bca","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554076,"name":"support","description":null,"description_html":"","text_color":"#1F1E24","color":"#f0ad4e","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554080,"name":"test-scope::label0","description":"scoped label","description_html":"scoped label","text_color":"#FFFFFF","color":"#6699cc","archived":false,"subscribed":false,"priority":null,"is_project_label":true},{"id":36554094,"name":"test-scope::label1","description":"","description_html":"","text_color":"#FFFFFF","color":"#dc143c","archived":false,"subscribed":false,"priority":null,"is_project_label":true}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 index fe69777a61..6478282753 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 @@ -1,23 +1,20 @@ -X-Gitlab-Meta: {"correlation_id":"9a4087994491e0d9-ATL","version":"1"} -X-Runtime: 0.188528 -Cf-Cache-Status: MISS -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Limit: 2000 -X-Frame-Options: SAMEORIGIN -Set-Cookie: __cf_bm=vRq7jzBikEzTq7AnqMSFoJylX9YITdPajG9uX4tCYrc-1764067245-1.0.1.1-Hvlybvw74Kibce1zpFZ5U3RZzRotTcS82dIqQrHeSDN5svoMhXq6s7eKBI.0y2048mnyh3swNvHQJl8uNf2OU7_0q_XKtRC.y7j6Z9HlKLQ; path=/; expires=Tue, 25-Nov-25 11:10:45 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=.7RnvMg3Voknz7jDeEvYmkDEODsSDm7wD3k4HhDyqas-1764067245334-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-20-lb-gprd -Ratelimit-Reset: 1764067260 -Etag: W/"03394ce63b5a2ead1d07419720dfe556" -Ratelimit-Remaining: 1977 -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -Content-Type: application/json +Cf-Cache-Status: MISS Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"cf224bae9251f5868bfb51709dbbd6e3" +Gitlab-Lb: haproxy-main-45-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Limit: 2000 Ratelimit-Name: throttle_authenticated_api -Ratelimit-Observed: 23 +Ratelimit-Observed: 25 +Ratelimit-Remaining: 1975 +Ratelimit-Reset: 1771085820 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.178737 -{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"feat/test","user_notes_count":0,"upvotes":1,"downvotes":0,"author":{"id":2005797,"username":"oliverpool","public_email":"","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":["test-scope::label0","test-scope::label1"],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":{"id":4711991,"iid":1,"project_id":61363672,"title":"1.1.0","description":"","state":"active","created_at":"2024-09-03T13:52:48.414Z","updated_at":"2024-09-03T14:52:14.093Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/1"},"merge_when_pipeline_succeeds":false,"merge_status":"can_be_merged","detailed_merge_status":"mergeable","merge_after":null,"sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2024-09-03T08:15:46.361Z","reference":"!1","references":{"short":"!1","relative":"!1","full":"forgejo/test_repo!1"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":false,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":"1","latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":true}} \ No newline at end of file +{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"feat/test","user_notes_count":0,"upvotes":1,"downvotes":0,"author":{"id":2005797,"username":"oliverpool","public_email":"","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":["test-scope::label0","test-scope::label1"],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":{"id":4711991,"iid":1,"project_id":61363672,"title":"1.1.0","description":"","state":"active","created_at":"2024-09-03T13:52:48.414Z","updated_at":"2024-09-03T14:52:14.093Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/1"},"merge_when_pipeline_succeeds":false,"merge_status":"can_be_merged","detailed_merge_status":"mergeable","merge_after":null,"sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2024-09-03T08:15:46.361Z","reference":"!1","references":{"short":"!1","relative":"!1","full":"forgejo/test_repo!1"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":false,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":"1","latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":false}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals index 4a9e817815..6a57040fa3 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals @@ -1,23 +1,20 @@ -Cf-Cache-Status: MISS -Gitlab-Sv: api-gke-us-east1-d -Ratelimit-Reset: 1764067260 -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -X-Frame-Options: SAMEORIGIN -Content-Type: application/json Cache-Control: max-age=0, private, must-revalidate -Etag: W/"3da5e3df1b0f9c6ee83a8de4be017f3a" -Vary: Origin, Accept-Encoding +Cf-Cache-Status: MISS Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"3bd641be6f148427c8595a68c455f91f" +Gitlab-Lb: haproxy-main-51-lb-gprd +Gitlab-Sv: api-gke-us-east1-d Ratelimit-Limit: 2000 Ratelimit-Name: throttle_authenticated_api -Ratelimit-Observed: 26 -Gitlab-Lb: haproxy-main-03-lb-gprd -Ratelimit-Remaining: 1974 -X-Gitlab-Meta: {"correlation_id":"9a40879ea04ee0d9-ATL","version":"1"} +Ratelimit-Observed: 28 +Ratelimit-Remaining: 1972 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin Strict-Transport-Security: max-age=31536000 -X-Runtime: 0.089708 -Set-Cookie: __cf_bm=OBdSEa.4KBD148U98yToDpYASVjC3RfvvJChcLJD_Kc-1764067246-1.0.1.1-1dlglt_BfkVGaLI98pb6juSKJMhyzHMY1KT5aZOuQyrf2HisPIb7tFfDgraswOe_IEGXIJyHjGWne9ncfWM_I1ALhUewLlQRlSABre9b17I; path=/; expires=Tue, 25-Nov-25 11:10:46 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=3vl9VuwtU32ij7owL1kgjOEE9G9SIR6v5rGoV1LSWMw-1764067246314-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.083008 -{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merge_status":"can_be_merged","approved":true,"approvals_required":0,"approvals_left":0,"require_password_to_approve":false,"approved_by":[{"user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"approved_at":"2024-09-03T18:50:20.774Z"}],"suggested_approvers":[],"approvers":[],"approver_groups":[],"user_has_approved":false,"user_can_approve":true,"approval_rules_left":[],"has_approval_rules":false,"merge_request_approvers_available":false,"multiple_approval_rules_available":false,"invalid_approvers_rules":[]} \ No newline at end of file +{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merge_status":"can_be_merged","approved":true,"approvals_required":0,"approvals_left":0,"require_password_to_approve":false,"approved_by":[{"user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"approved_at":"2024-09-03T18:50:20.774Z"}],"suggested_approvers":[],"approvers":[],"approver_groups":[],"user_has_approved":false,"user_can_approve":false,"approval_rules_left":[],"has_approval_rules":false,"merge_request_approvers_available":false,"multiple_approval_rules_available":false,"invalid_approvers_rules":[]} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 deleted file mode 100644 index e14fd54fe9..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 +++ /dev/null @@ -1,30 +0,0 @@ -X-Total: 2 -Cache-Control: max-age=0, private, must-revalidate -Gitlab-Lb: haproxy-main-52-lb-gprd -Ratelimit-Name: throttle_authenticated_api -X-Page: 1 -Etag: W/"70c4ed058c515311f62a5765a249cc5a" -Referrer-Policy: strict-origin-when-cross-origin -X-Next-Page: 2 -Link: ; rel="next", ; rel="first", ; rel="last" -Content-Security-Policy: default-src 'none' -X-Total-Pages: 2 -Set-Cookie: __cf_bm=XkuPSlZqX6G9cDIjI3kScBSmIE8.DphoKnxS7TLsOkw-1764063483-1.0.1.1-mbTkp1GpKErhvN0TGPwU7C70xZ3hGtyNGmIFwd0ztkPoYV1Sa6EAAmpFv0UvuVIo1MZUfmjpu0nKcM0sgmv5Yq93F_j6Mo5yv42SwqSCp.o; path=/; expires=Tue, 25-Nov-25 10:08:03 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=bAOzKGORp_o4KNjq.9E3ti0ukBGdMCxdTqK0GKzH8HM-1764063483573-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -X-Content-Type-Options: nosniff -X-Prev-Page: -Strict-Transport-Security: max-age=31536000 -Ratelimit-Limit: 2000 -Ratelimit-Remaining: 1993 -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"9a402bbdd2c14fc7-ATL","version":"1"} -Gitlab-Sv: gke-cny-api -Ratelimit-Observed: 7 -X-Runtime: 0.556538 -Cf-Cache-Status: MISS -Vary: Origin, Accept-Encoding -Ratelimit-Reset: 1764063540 -X-Per-Page: 1 - -[{"id":28098492,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:49:58.072Z","updated_at":"2024-09-03T18:49:58.072Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 index 7f5cac98b4..0c8899056e 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 @@ -1,30 +1,27 @@ -Cf-Cache-Status: MISS -Ratelimit-Reset: 1764067260 -X-Page: 1 -X-Total-Pages: 1 -Content-Type: application/json -Gitlab-Lb: haproxy-main-54-lb-gprd -Ratelimit-Limit: 2000 -Referrer-Policy: strict-origin-when-cross-origin -X-Gitlab-Meta: {"correlation_id":"9a40879b9635e0d9-ATL","version":"1"} -X-Runtime: 0.064452 -Set-Cookie: __cf_bm=b3C7feSdSLcE5xBQkgGd_HSIGeFMUvtzoe7GjmBh4Sk-1764067245-1.0.1.1-69_Md94YSDAyIau0t6tbIWbQGCnD__2bLKIX_WYDa0uRa9WuVm1U9fHC0QdOI_PYD4NVQM68oFumZvLz.O6A93tHnH6PxlVDxJEc1i_gzfQ; path=/; expires=Tue, 25-Nov-25 11:10:45 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=i6_IAh2s573c9vJrB5wlCzyfSOOgp4v9v0gzK1Wr0nk-1764067245571-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Vary: Origin, Accept-Encoding -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Observed: 24 -X-Content-Type-Options: nosniff -X-Total: 2 -Link: ; rel="first", ; rel="last" -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-d -Ratelimit-Remaining: 1976 -Etag: W/"bd2f80bb25761a40ac32dfacf2031227" -Content-Security-Policy: default-src 'none' -X-Next-Page: -X-Prev-Page: Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"bd2f80bb25761a40ac32dfacf2031227" +Gitlab-Lb: haproxy-main-39-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 26 +Ratelimit-Remaining: 1974 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 X-Per-Page: 2 +X-Prev-Page: +X-Runtime: 0.069272 +X-Total: 2 +X-Total-Pages: 1 [{"id":28098492,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:49:58.072Z","updated_at":"2024-09-03T18:49:58.072Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null},{"id":28098494,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:50:02.028Z","updated_at":"2024-09-03T18:50:02.028Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 deleted file mode 100644 index afd45d6577..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 +++ /dev/null @@ -1,30 +0,0 @@ -X-Runtime: 0.081215 -Vary: Origin, Accept-Encoding -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"9a402bc4a7d24fc7-ATL","version":"1"} -X-Page: 2 -Set-Cookie: __cf_bm=YmAk0.hRdZg1DtVIkj7YXf8z7q94AXkw7DPT6UASlcg-1764063484-1.0.1.1-rCR7QJGDjGvGw7RA8JmcdbMEKiNoDr3w9Iyu290lGhFN6oyozy1GKI51UR6Ul29VSBh9W2lqUqeBIF2gSCTe227jItc5EnFmEUrzN3_dPUQ; path=/; expires=Tue, 25-Nov-25 10:08:04 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=cQxspr39HLxTXEIAEI3Z8UlOj.KlZ4ayyHo87KzcH9g-1764063484057-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -Content-Type: application/json -Cf-Cache-Status: MISS -Strict-Transport-Security: max-age=31536000 -Ratelimit-Reset: 1764063540 -X-Per-Page: 1 -X-Prev-Page: 1 -Ratelimit-Observed: 8 -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -X-Next-Page: -X-Total: 2 -X-Total-Pages: 2 -Gitlab-Lb: haproxy-main-59-lb-gprd -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Remaining: 1992 -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"9c7da703c0da01fbfe41ef1d4bd2a84e" -Link: ; rel="prev", ; rel="first", ; rel="last" -Ratelimit-Limit: 2000 -Ratelimit-Name: throttle_authenticated_api - -[{"id":28098494,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:50:02.028Z","updated_at":"2024-09-03T18:50:02.028Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 index 3eae28338a..460708af72 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 @@ -1,32 +1,29 @@ -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Ratelimit-Limit: 2000 -Ratelimit-Remaining: 1975 -X-Next-Page: -X-Prev-Page: -Cf-Cache-Status: MISS Accept-Ranges: bytes -Ratelimit-Reset: 1764067260 -Gitlab-Lb: haproxy-main-20-lb-gprd +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-28-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 27 +Ratelimit-Remaining: 1973 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff -X-Gitlab-Meta: {"correlation_id":"9a40879d1756e0d9-ATL","version":"1"} +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 2 +X-Per-Page: 2 +X-Prev-Page: +X-Runtime: 0.064023 X-Total: 2 X-Total-Pages: 1 -Content-Type: application/json -Content-Length: 2 -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Observed: 25 -X-Page: 2 -X-Runtime: 0.067902 -Ratelimit-Name: throttle_authenticated_api -X-Per-Page: 2 -Vary: Origin, Accept-Encoding -Referrer-Policy: strict-origin-when-cross-origin -X-Frame-Options: SAMEORIGIN -Strict-Transport-Security: max-age=31536000 -Content-Security-Policy: default-src 'none' -Link: ; rel="first", ; rel="last" -Set-Cookie: __cf_bm=h8BkNDjGvwb3L57ZRGQkkABB5U78kXobmi1vtvY8i5c-1764067245-1.0.1.1-qeX.CJTb63vRVrI6u7enwWNE_coj067G.amslx62c.UdglGf2qHOdO25C8bxHlEWtNPaxlkY0ihPzQSjY2B.em1fEWDa98O9iqQxEEgy680; path=/; expires=Tue, 25-Nov-25 11:10:45 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=384Idtls0tkTwfkLTd3hr9ayqErhfdHhmT.uwruZi1E-1764067245816-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 deleted file mode 100644 index 22dc3f24fc..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 +++ /dev/null @@ -1,32 +0,0 @@ -X-Runtime: 0.081756 -Content-Type: application/json -X-Frame-Options: SAMEORIGIN -X-Page: 3 -Strict-Transport-Security: max-age=31536000 -Content-Security-Policy: default-src 'none' -X-Content-Type-Options: nosniff -X-Next-Page: -X-Total: 2 -Content-Length: 2 -Cf-Cache-Status: MISS -X-Prev-Page: -Accept-Ranges: bytes -Gitlab-Sv: api-gke-us-east1-c -Set-Cookie: __cf_bm=AHaUZsC2vGJiM7kOdVaKOrbNwS69trH4NwA4P6H35Vo-1764063484-1.0.1.1-gfqG42z4PvllEAyjj0SNhLcsgPK3u54jS6cGLa78UgC.Any.C_FMzf7kkXJvCnT28XdjZ7_FcCLOVfdz8xG3y9QpvRCvCWhSzmFixx.vluM; path=/; expires=Tue, 25-Nov-25 10:08:04 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=yd78Ii6EQz3b4s8UdQ3cbMCFHi10JBkiCih71Ur2DCY-1764063484541-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Reset: 1764063540 -Link: ; rel="first", ; rel="last" -Gitlab-Lb: haproxy-main-38-lb-gprd -Ratelimit-Limit: 2000 -Ratelimit-Observed: 9 -Ratelimit-Remaining: 1991 -X-Gitlab-Meta: {"correlation_id":"9a402bc7a1d04fc7-ATL","version":"1"} -X-Total-Pages: 2 -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -X-Per-Page: 1 -Vary: Origin, Accept-Encoding -Referrer-Policy: strict-origin-when-cross-origin - -[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 index f28ebfc5b3..06edc96b4f 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 @@ -1,23 +1,20 @@ -X-Runtime: 0.178866 -Set-Cookie: __cf_bm=HovvnRHtwoTC7rEbSu8TkTRpkxnN64EyEWBOEpKDwU8-1764067244-1.0.1.1-0CLYMFRqlcI0z_A7KhZby1Aw17uQQga6KzLBpEDHWCnRtXpCZQJogK6a4bPwHMTwIX88ao8QGRhAkD.23OgXKxzXH4VrjXO0rYEok74gQd4; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=O46TDle0ljANZqt352yHmPEDBXtO70FiLe5dp9Z0Wnw-1764067244738-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Ratelimit-Name: throttle_authenticated_api -X-Content-Type-Options: nosniff -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-b -Ratelimit-Reset: 1764067260 -X-Gitlab-Meta: {"correlation_id":"9a408795917de0d9-ATL","version":"1"} -Cf-Cache-Status: MISS -Etag: W/"e5bb0f6d19fcb489771c0b23b44ef3c7" -Vary: Origin, Accept-Encoding -Gitlab-Lb: haproxy-main-25-lb-gprd -Ratelimit-Limit: 2000 -Referrer-Policy: strict-origin-when-cross-origin Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS Content-Security-Policy: default-src 'none' -Ratelimit-Observed: 21 -Ratelimit-Remaining: 1979 +Content-Type: application/json +Etag: W/"9ee6be6c33814e3e7602172c770ee033" +Gitlab-Lb: haproxy-main-59-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 23 +Ratelimit-Remaining: 1977 +Ratelimit-Reset: 1771085820 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN +X-Runtime: 0.186907 -{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"test/parsing","user_notes_count":1,"upvotes":0,"downvotes":0,"author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":[],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":null,"merge_when_pipeline_succeeds":false,"merge_status":"cannot_be_merged","detailed_merge_status":"commits_status","merge_after":null,"sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2025-11-25T09:48:21.605Z","reference":"!2","references":{"short":"!2","relative":"!2","full":"forgejo/test_repo!2"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":true,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":null,"latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":true}} \ No newline at end of file +{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"test/parsing","user_notes_count":1,"upvotes":0,"downvotes":0,"author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":[],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":null,"merge_when_pipeline_succeeds":false,"merge_status":"cannot_be_merged","detailed_merge_status":"commits_status","merge_after":null,"sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2025-11-25T09:48:21.605Z","reference":"!2","references":{"short":"!2","relative":"!2","full":"forgejo/test_repo!2"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":true,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":false,"changes_count":null,"latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":false}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fapprovals b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fapprovals deleted file mode 100644 index 8025baab29..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fapprovals +++ /dev/null @@ -1,16 +0,0 @@ -Content-Type: application/json -Cache-Control: no-cache -X-Runtime: 0.050861 -Cf-Cache-Status: MISS -Content-Length: 27 -Strict-Transport-Security: max-age=31536000 -X-Content-Type-Options: nosniff -Set-Cookie: _cfuvid=dOl9pLwVdWdrfHK2_lQ8ilTg21PZJf8ErnJ6hi2V6LQ-1725394529656-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -X-Gitlab-Meta: {"correlation_id":"8b1408168090614939be8b301aaf8ec1","version":"1"} -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Lb: haproxy-main-42-lb-gprd -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-b - -{"message":"404 Not found"} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 deleted file mode 100644 index 3ed2facd4e..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 +++ /dev/null @@ -1,32 +0,0 @@ -X-Next-Page: -Content-Length: 2 -Cf-Cache-Status: MISS -Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-18-lb-gprd -Referrer-Policy: strict-origin-when-cross-origin -Content-Type: application/json -Ratelimit-Observed: 19 -X-Prev-Page: -X-Total: 0 -Accept-Ranges: bytes -Ratelimit-Remaining: 1981 -X-Content-Type-Options: nosniff -X-Per-Page: 1 -X-Runtime: 0.334300 -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Link: ; rel="first", ; rel="last" -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-d -Ratelimit-Limit: 2000 -Ratelimit-Reset: 1764065160 -X-Gitlab-Meta: {"correlation_id":"9a40538146934fc7-ATL","version":"1"} -Vary: Origin, Accept-Encoding -X-Page: 1 -X-Total-Pages: 1 -Set-Cookie: __cf_bm=aMNCos1nC670QtjMcPl6AMOr5.gQUvwKoSkkyhFR2hA-1764065111-1.0.1.1-m.0niiKJJIBHdpKYYtPy7xw4tWUWsrxwXv.ZidE9s75fbutM0awLVZIAG4443voqhHhr92y0BEsgfJd2.dEPfqO5y0Zq8U2dIDMlwE7IjUI; path=/; expires=Tue, 25-Nov-25 10:35:11 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=ldTbqSB2WbTEqJNb2dvw._Hp9jvybBVGuhFVSaaB7GA-1764065111752-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Name: throttle_authenticated_api -X-Frame-Options: SAMEORIGIN - -[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 index c5c729ae7b..bf1be1a533 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 @@ -1,32 +1,29 @@ +Accept-Ranges: bytes +Cache-Control: max-age=0, private, must-revalidate Cf-Cache-Status: MISS +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-21-lb-gprd +Gitlab-Sv: api-gke-us-east1-d Link: ; rel="first", ; rel="last" -Ratelimit-Remaining: 1978 +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 24 +Ratelimit-Remaining: 1976 +Ratelimit-Reset: 1771055640 Referrer-Policy: strict-origin-when-cross-origin Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-c +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"9a408797d389e0d9-ATL","version":"1"} -X-Total: 0 -Content-Length: 2 -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Reset: 1764067260 -X-Prev-Page: -Set-Cookie: __cf_bm=H04JUnNcTc5yzKjplGbl_VmPweCoi2aMc578JKU_Q.M-1764067244-1.0.1.1-zcEHZ4sJjriN3Gh0ujBF_3s7qAY.rzjaoXGjAqzJntUfd.fKcKzAnTLjEg70s0xAr7208YETSkoJ7.HlDXm0T3N1s6mI_oGRQ_xeDuc5FP8; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=R_C1xCw9pcpiAS2mZ6MTjC9pE2RWjtSAXb5vDH3RRbQ-1764067244972-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Accept-Ranges: bytes -Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-23-lb-gprd -X-Total-Pages: 1 -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Ratelimit-Observed: 22 -X-Runtime: 0.058917 -Content-Type: application/json -Ratelimit-Limit: 2000 -Cache-Control: max-age=0, private, must-revalidate X-Next-Page: -Vary: Origin, Accept-Encoding X-Page: 1 X-Per-Page: 2 +X-Prev-Page: +X-Runtime: 0.060605 +X-Total: 0 +X-Total-Pages: 1 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 index 43a14538b7..59a52da44b 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 @@ -1,30 +1,27 @@ -Set-Cookie: __cf_bm=o0aS8o8ajcHs8a5C4vSUXQmZAQazi4dD0KCvTVlvSes-1764067243-1.0.1.1-94CxZwBfz9gJBykfV5Arn2iq8ORj_QBoMo9BmK9tJUwpEf0.WHNvPI5pVdUvZhdhCJGv3Bcxj0RbLwC..n2enJmsCgru1h.kjm0qBMVBCHA; path=/; expires=Tue, 25-Nov-25 11:10:43 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=HmW_.D2rp7JGXPOBvfl0WM76DobWOh6fFYs.z8WTWgw-1764067243834-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cf-Cache-Status: MISS -Link: ; rel="first", ; rel="last" -Ratelimit-Observed: 18 -X-Total: 2 -Content-Security-Policy: default-src 'none' -Ratelimit-Remaining: 1982 -X-Next-Page: -Content-Type: application/json -Strict-Transport-Security: max-age=31536000 Cache-Control: max-age=0, private, must-revalidate -Gitlab-Lb: haproxy-main-03-lb-gprd -X-Gitlab-Meta: {"correlation_id":"9a40879044cce0d9-ATL","version":"1"} +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json Etag: W/"d87805cd93ac626c7e1fe459c808b459" -X-Page: 1 -X-Runtime: 0.131844 -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-d -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Reset: 1764067260 -X-Frame-Options: SAMEORIGIN -X-Prev-Page: +Gitlab-Lb: haproxy-main-10-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 20 +Ratelimit-Remaining: 1980 +Ratelimit-Reset: 1771055640 Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.166725 +X-Total: 2 X-Total-Pages: 1 [{"id":"b5ca983c1aa64f694c89a7c6df9a27a7b68b5414","individual_note":true,"notes":[{"id":2911818565,"type":null,"body":"Although we had some trouble with !1.","author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"created_at":"2025-11-25T09:49:00.750Z","updated_at":"2025-11-25T09:49:00.750Z","system":false,"noteable_id":435564587,"noteable_type":"MergeRequest","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"d6baff3ff75a892764e7b3cc164689687c875266","individual_note":true,"notes":[{"id":2911820075,"type":null,"body":"mentioned in issue #3","author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"created_at":"2025-11-25T09:49:32.263Z","updated_at":"2025-11-25T09:49:32.265Z","system":true,"noteable_id":435564587,"noteable_type":"MergeRequest","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 index f4f9a26815..6059cfa08d 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 @@ -1,32 +1,29 @@ -Cf-Cache-Status: MISS -Cache-Control: max-age=0, private, must-revalidate -Content-Security-Policy: default-src 'none' -X-Content-Type-Options: nosniff -X-Per-Page: 100 -Content-Type: application/json -Vary: Origin, Accept-Encoding -Gitlab-Sv: api-gke-us-east1-b -X-Frame-Options: SAMEORIGIN -X-Page: 1 -X-Total: 0 Accept-Ranges: bytes -Link: ; rel="first", ; rel="last" -X-Prev-Page: -X-Total-Pages: 1 -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-37-lb-gprd -X-Gitlab-Meta: {"correlation_id":"9a408792362de0d9-ATL","version":"1"} -X-Runtime: 0.082961 -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Ratelimit-Limit: 2000 -Ratelimit-Reset: 1764067260 -Referrer-Policy: strict-origin-when-cross-origin -X-Next-Page: -Set-Cookie: __cf_bm=AnbNdfNVmM4eBwZO07iC8Va19AxPZPp91NRwcAAlm_4-1764067244-1.0.1.1-qdSGqOhjrZDqx4w1MVLdWS9_hLohzXuyB6JjSNSvzdYbcKAB9eHFjLuKigE7JLZOzDMt7b4_O8Z_a9VJwO5qn4QmH1tG0wA3sxAzlkyFpog; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=l_1AA94UEp6etDe2M2tLuf3x3bwZqHT2Kexkl1I.K18-1764067244103-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-21-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 Ratelimit-Name: throttle_authenticated_api -Ratelimit-Observed: 19 -Ratelimit-Remaining: 1981 +Ratelimit-Observed: 21 +Ratelimit-Remaining: 1979 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.071763 +X-Total: 0 +X-Total-Pages: 1 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple deleted file mode 100644 index bbeec767ae..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple +++ /dev/null @@ -1,30 +0,0 @@ -Ratelimit-Name: throttle_authenticated_api -X-Per-Page: 1 -X-Total: 2 -Content-Type: application/json -Etag: W/"bea70362bb288b76f51e3d14bd31bc42" -Ratelimit-Observed: 17 -X-Runtime: 0.447768 -X-Total-Pages: 2 -Ratelimit-Limit: 2000 -Ratelimit-Remaining: 1983 -Ratelimit-Reset: 1764065160 -Referrer-Policy: strict-origin-when-cross-origin -X-Content-Type-Options: nosniff -Gitlab-Sv: api-gke-us-east1-c -X-Frame-Options: SAMEORIGIN -Content-Security-Policy: default-src 'none' -X-Gitlab-Meta: {"correlation_id":"9a40537b01234fc7-ATL","version":"1"} -Set-Cookie: __cf_bm=_HMrVhG5HY5SHmHF_4ytrh.j8o.Q2PM_KOi9Vc9CQts-1764065110-1.0.1.1-cRPKy84Yt3i5.R5xOiJjfYqrJUDcb2sTotrA4Di5rodGlh4onCATQRN9el4Gx41Mx_TZWH0HatzJ5eRfxxBpy_0QKhMi3U6s46JhXhTzsmU; path=/; expires=Tue, 25-Nov-25 10:35:10 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=J1H2NC_dYKCXaGmgSwM0Ahwl.9DTCQXtQRfhU.LqfQI-1764065110860-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cf-Cache-Status: MISS -Gitlab-Lb: haproxy-main-08-lb-gprd -X-Page: 1 -Cache-Control: max-age=0, private, must-revalidate -Link: ; rel="next", ; rel="first", ; rel="last" -Strict-Transport-Security: max-age=31536000 -Vary: Origin, Accept-Encoding -X-Next-Page: 2 -X-Prev-Page: - -[{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple index 49b8a01c33..e928372280 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple @@ -1,30 +1,27 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"890cf8ae2716f07ebfd15e1c459084c7" +Gitlab-Lb: haproxy-main-55-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 22 +Ratelimit-Remaining: 1978 +Ratelimit-Reset: 1771055640 Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Sv: api-gke-us-east1-c +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Next-Page: X-Page: 1 X-Per-Page: 2 -Link: ; rel="first", ; rel="last" -Ratelimit-Remaining: 1980 -X-Runtime: 0.087096 -X-Total-Pages: 1 -Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Ratelimit-Observed: 20 -Set-Cookie: __cf_bm=oXDIvscgtcgX.J4BQH6gVUnRcpqDCIxXtIW88H5GkeE-1764067244-1.0.1.1-MRMb6HL_mAeWU7TOSknLwTRt2Vci4So1emQBn4uV6PvsIL4KAA7mEHa7wQYT0M6iXAH7ZrZz9R2cQT9cOsKuj_dxehLZHXdKGWA2H9sXINM; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=sto9ErHOck8xfsNxjLefx9wVTcqi24bVZV4T.w0DQSw-1764067244372-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Vary: Origin, Accept-Encoding -Ratelimit-Limit: 2000 -Ratelimit-Name: throttle_authenticated_api -Ratelimit-Reset: 1764067260 -Cf-Cache-Status: MISS -Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-32-lb-gprd -X-Gitlab-Meta: {"correlation_id":"9a408793e7bfe0d9-ATL","version":"1"} -X-Total: 2 -Etag: W/"890cf8ae2716f07ebfd15e1c459084c7" -X-Frame-Options: SAMEORIGIN X-Prev-Page: +X-Runtime: 0.127936 +X-Total: 2 +X-Total-Pages: 1 [{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2"},{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all index 5583057266..8d10968741 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all @@ -1,30 +1,27 @@ -Gitlab-Sv: api-gke-us-east1-c -X-Page: 1 -X-Per-Page: 100 -Cf-Cache-Status: MISS Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"a42f286b703ec341ad7f117b273a51ad" +Gitlab-Lb: haproxy-main-32-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 5 +Ratelimit-Remaining: 1995 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-Next-Page: +X-Page: 1 +X-Per-Page: 100 X-Prev-Page: -Set-Cookie: __cf_bm=_41Rh9aSyGsrVkscA.pV8yzJ4_ETNn9QF0Ag5uOwFqM-1764067238-1.0.1.1-bznJbf8viMS6FKcHE5lHz3uctOWh26FtF1avZuq328MUfmiD9DR0UYeWy900ArfK2i6mhadZCuvjqSl5V4hfYb3ndX30EH36gtJnzrDm11I; path=/; expires=Tue, 25-Nov-25 11:10:38 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=rCL0Wxxs.PKqgYyWaT19PeP_2uBvc11akIdy0Wt8f7A-1764067238959-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Gitlab-Lb: haproxy-main-08-lb-gprd -Ratelimit-Observed: 5 -Referrer-Policy: strict-origin-when-cross-origin -Etag: W/"a42f286b703ec341ad7f117b273a51ad" -Strict-Transport-Security: max-age=31536000 -Ratelimit-Limit: 2000 +X-Runtime: 0.117952 X-Total: 2 -Ratelimit-Remaining: 1995 -Ratelimit-Reset: 1764067260 -X-Gitlab-Meta: {"correlation_id":"9a40876f5056e0d9-ATL","version":"1"} -X-Content-Type-Options: nosniff -X-Runtime: 0.490074 X-Total-Pages: 1 -Link: ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -Ratelimit-Name: throttle_authenticated_api -Content-Security-Policy: default-src 'none' [{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},{"id":4711991,"iid":1,"project_id":61363672,"title":"1.1.0","description":"","state":"active","created_at":"2024-09-03T13:52:48.414Z","updated_at":"2024-09-03T14:52:14.093Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/1"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 index 69147618ed..193e78630e 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 @@ -1,30 +1,27 @@ -Etag: W/"8e9bc910bda56a48f88c6b10688d08e9" -X-Frame-Options: SAMEORIGIN -Set-Cookie: __cf_bm=IqmyzMHjnUzan7uwUHFl.h_L2KH2gn3oinFwKn.ohxw-1764067239-1.0.1.1-U49Lfd8o3XxxNn6s4NaaBb6IVSBNE6qZIXrgjggwzM6hh_Y3AMRrXPgR.cYt2JjjBfysZfQXaB5iC5HN8VZ_KefSkjWzKZTI11._lwVsze8; path=/; expires=Tue, 25-Nov-25 11:10:39 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=bimDaLUdNYksl6173_Be3EXR5YSZBCDuUSR5YDEQP8s-1764067239812-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cache-Control: max-age=0, private, must-revalidate -Gitlab-Lb: haproxy-main-01-lb-gprd -Ratelimit-Name: throttle_authenticated_api -X-Total-Pages: 1 Cf-Cache-Status: MISS -Strict-Transport-Security: max-age=31536000 Content-Security-Policy: default-src 'none' -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Reset: 1764067260 -X-Prev-Page: -Vary: Origin, Accept-Encoding -X-Gitlab-Meta: {"correlation_id":"9a4087774774e0d9-ATL","version":"1"} -X-Per-Page: 100 Content-Type: application/json +Etag: W/"fc79a561cf4910ed7107f242a4561dab" +Gitlab-Lb: haproxy-main-40-lb-gprd Gitlab-Sv: api-gke-us-east1-b Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api Ratelimit-Observed: 7 +Ratelimit-Remaining: 1993 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Next-Page: X-Page: 1 -X-Runtime: 0.099947 -Ratelimit-Limit: 2000 -Ratelimit-Remaining: 1993 +X-Per-Page: 100 +X-Prev-Page: +X-Runtime: 0.113045 X-Total: 1 +X-Total-Pages: 1 -[{"name":"First Release","tag_name":"v0.9.99","description":"A test release","created_at":"2024-09-03T15:01:01.513Z","released_at":"2024-09-03T15:01:01.000Z","upcoming_release":false,"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"commit":{"id":"0720a3ec57c1f843568298117b874319e7deee75","short_id":"0720a3ec","created_at":"2019-11-28T08:49:16.000+00:00","parent_ids":["93ea21ce45d35690c35e80961d239645139e872c"],"title":"Add new file","message":"Add new file","author_name":"Lauris BH","author_email":"lauris@nix.lv","authored_date":"2019-11-28T08:49:16.000+00:00","committer_name":"Lauris BH","committer_email":"lauris@nix.lv","committed_date":"2019-11-28T08:49:16.000+00:00","trailers":{},"extended_trailers":{},"web_url":"https://gitlab.com/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75"},"commit_path":"/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75","tag_path":"/forgejo/test_repo/-/tags/v0.9.99","assets":{"count":4,"sources":[{"format":"zip","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.zip"},{"format":"tar.gz","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.gz"},{"format":"tar.bz2","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.bz2"},{"format":"tar","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar"}],"links":[]},"evidences":[{"sha":"e30c1d21d05ff0c73436ee1e97b3ef12a1d6d33d0dcd","filepath":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/evidences/9608487.json","collected_at":"2024-09-03T15:01:02.963Z"}],"_links":{"closed_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=closed","closed_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=closed","edit_url":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/edit","merged_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=merged","opened_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=opened","opened_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=opened","self":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99"}}] \ No newline at end of file +[{"name":"First Release","tag_name":"v0.9.99","description":"A test release","created_at":"2024-09-03T15:01:01.513Z","released_at":"2024-09-03T15:01:01.000Z","upcoming_release":false,"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"commit":{"id":"0720a3ec57c1f843568298117b874319e7deee75","short_id":"0720a3ec","created_at":"2019-11-28T08:49:16.000+00:00","parent_ids":["93ea21ce45d35690c35e80961d239645139e872c"],"title":"Add new file","message":"Add new file","author_name":"Lauris BH","author_email":"lauris@nix.lv","authored_date":"2019-11-28T08:49:16.000+00:00","committer_name":"Lauris BH","committer_email":"lauris@nix.lv","committed_date":"2019-11-28T08:49:16.000+00:00","trailers":{},"extended_trailers":{},"web_url":"https://gitlab.com/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75"},"commit_path":"/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75","tag_path":"/forgejo/test_repo/-/tags/v0.9.99","assets":{"count":10,"sources":[{"format":"zip","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.zip"},{"format":"tar.gz","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.gz"},{"format":"tar.bz2","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.bz2"},{"format":"tar","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar"}],"links":[{"id":10694714,"name":"Forgejo logo","url":"https://gitlab.com/-/project/61363672/uploads/3756af8a4893bea08b99536df000e932/image.png","direct_asset_url":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/downloads/forgejo.png","link_type":"other"},{"id":10687293,"name":"zip (other)","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.zip","direct_asset_url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.zip","link_type":"other"},{"id":10687292,"name":"Forgejo","url":"https://forgejo.org/","direct_asset_url":"https://forgejo.org/","link_type":"other"},{"id":10687291,"name":"Frogejo 🐸","url":"https://frogejo.org/","direct_asset_url":"https://frogejo.org/","link_type":"image"},{"id":10687290,"name":"tar.bz2 (runbook)","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.bz2","direct_asset_url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.bz2","link_type":"runbook"},{"id":10687289,"name":"tar.gz (package)","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.gz","direct_asset_url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.gz","link_type":"package"}]},"evidences":[{"sha":"e30c1d21d05ff0c73436ee1e97b3ef12a1d6d33d0dcd","filepath":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/evidences/9608487.json","collected_at":"2024-09-03T15:01:02.963Z"}],"_links":{"closed_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=closed","closed_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=closed","edit_url":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/edit","merged_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=merged","opened_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=opened","opened_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=opened","self":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99"}}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo index b9f3b5883c..d5c617521b 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo @@ -1,23 +1,20 @@ -X-Runtime: 0.171155 -Etag: W/"c77cec95a47ea2b28a897b9b9eaaf641" -Strict-Transport-Security: max-age=31536000 -Vary: Origin, Accept-Encoding -Gitlab-Lb: haproxy-main-15-lb-gprd -Ratelimit-Remaining: 1998 -Ratelimit-Reset: 1764067260 -X-Gitlab-Meta: {"correlation_id":"9a4087681127e0d9-ATL","version":"1"} -Content-Type: application/json Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Limit: 2000 -Ratelimit-Observed: 2 -X-Content-Type-Options: nosniff Cf-Cache-Status: MISS Content-Security-Policy: default-src 'none' -Gitlab-Sv: api-gke-us-east1-d +Content-Type: application/json +Etag: W/"c121b3a20c1098563adf329ff75151ef" +Gitlab-Lb: haproxy-main-50-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Limit: 2000 Ratelimit-Name: throttle_authenticated_api -X-Frame-Options: SAMEORIGIN -Set-Cookie: __cf_bm=ewgZYYeSboiRyGpVTDdPSVDfQthTkGsdCdZ98QAfFxg-1764067237-1.0.1.1-BpQ7IOgWJuKrJMmIUiu_2cbPWhTpSIXcC7t33gKB2xDwnlymfMCkCOBlDVT.dPN4HFT1_6NaM9LC2vHEe.kYzUnW9T5U6aySrghgvKuops0; path=/; expires=Tue, 25-Nov-25 11:10:37 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=vtpk1JkIE1jJ1yKC2ZDs1gmNCGXsPbWYHO.qSKcyAYc-1764067237452-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Ratelimit-Observed: 2 +Ratelimit-Remaining: 1998 +Ratelimit-Reset: 1771085820 Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.160512 -{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:03:01.001Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"forked_from_project":{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":2,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:21:43.130Z","visibility":"public","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"}},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"service_desk_address":"contact-project+forgejo-test-repo-61363672-issue-@incoming.gitlab.com","can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"mr_default_target_self":false,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":1,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2025-11-25T09:21:03.121Z","ci_default_git_depth":50,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":false,"web_based_commit_signing_enabled":false,"permissions":{"project_access":{"access_level":40,"notification_level":3},"group_access":null}} \ No newline at end of file +{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","migration test","test"],"topics":["migration","migration test","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2026-02-13T20:46:12.772Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":true,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":false,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":2,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2026-02-14T16:16:08.902Z","ci_default_git_depth":50,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"web_based_commit_signing_enabled":false,"permissions":{"project_access":null,"group_access":{"access_level":50,"notification_level":3}}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fgitea%252Ftest_repo b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fgitea%252Ftest_repo deleted file mode 100644 index 96f1ea86b5..0000000000 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fgitea%252Ftest_repo +++ /dev/null @@ -1,17 +0,0 @@ -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Lb: haproxy-main-51-lb-gprd -Cf-Cache-Status: MISS -Etag: W/"8db4917b3be5f4ca0d101a702179b75a" -X-Content-Type-Options: nosniff -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-b -Content-Type: application/json -Cache-Control: max-age=0, private, must-revalidate -X-Gitlab-Meta: {"correlation_id":"9b3859cf6d73ce5de261a56d286072a5","version":"1"} -X-Runtime: 0.119487 -Content-Security-Policy: default-src 'none' -Vary: Origin, Accept-Encoding -Set-Cookie: _cfuvid=Cmc.ycVkdwA_tBvmR2tOVLQ5B.khzzU39ZUxgf4RNlw-1710504204838-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Frame-Options: SAMEORIGIN - -{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":1,"avatar_url":null,"star_count":0,"last_activity_at":"2020-04-19T19:46:04.527Z","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"},"container_registry_image_prefix":"registry.gitlab.com/gitea/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/15578026","issues":"https://gitlab.com/api/v4/projects/15578026/issues","merge_requests":"https://gitlab.com/api/v4/projects/15578026/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/15578026/repository/branches","labels":"https://gitlab.com/api/v4/projects/15578026/labels","events":"https://gitlab.com/api/v4/projects/15578026/events","members":"https://gitlab.com/api/v4/projects/15578026/members","cluster_agents":"https://gitlab.com/api/v4/projects/15578026/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"public","resolve_outdated_diff_discussions":false,"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":1241334,"import_status":"none","open_issues_count":0,"description_html":"\u003cp data-sourcepos=\"1:1-1:58\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to gitea\u003c/p\u003e","updated_at":"2024-01-11T01:23:21.057Z","ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"ff","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"permissions":{"project_access":null,"group_access":null}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion index 312161fafc..4a73d0774c 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion @@ -1,23 +1,20 @@ -Gitlab-Sv: api-gke-us-east1-c -Ratelimit-Name: throttle_authenticated_api -X-Content-Type-Options: nosniff Cache-Control: max-age=0, private, must-revalidate -Etag: W/"07cf63ed6ca527a8440305b235c1dbe6" -Vary: Origin, Accept-Encoding -Gitlab-Lb: haproxy-main-02-lb-gprd -X-Gitlab-Meta: {"correlation_id":"9a40876657b0e0d9-ATL","version":"1"} -Set-Cookie: __cf_bm=6UrvvT.eVACA2RNxuo3JgYQGOf87viAkfYl9Zk_E3A4-1764067237-1.0.1.1-Eq.xOoKXTaA91xlfvuNCFFzkpGifBiA41K8r8QGdw0f_sTr66SIHXtulqNIs7.A6aF8RcfB6owiKiV_rect7ubdVVRrKTWwxfHtaWvykTrI; path=/; expires=Tue, 25-Nov-25 11:10:37 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Set-Cookie: _cfuvid=NMsff2_I6aWniAT9LeJhCwEeMAfr8Wkjg5mYqJ06haU-1764067237046-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cf-Cache-Status: MISS -Strict-Transport-Security: max-age=31536000 -Ratelimit-Limit: 2000 -Ratelimit-Remaining: 1999 -Referrer-Policy: strict-origin-when-cross-origin Content-Security-Policy: default-src 'none' -Ratelimit-Observed: 1 -Ratelimit-Reset: 1764067260 -X-Frame-Options: SAMEORIGIN -X-Runtime: 0.051513 Content-Type: application/json +Etag: W/"eb8caeed3eb2f6feb10c7f2b9610d346" +Gitlab-Lb: haproxy-main-24-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 1 +Ratelimit-Remaining: 1999 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.054657 -{"version":"18.7.0-pre","revision":"6f8cf4c6c2b","kas":{"enabled":true,"externalUrl":"wss://kas.gitlab.com","externalK8sProxyUrl":"https://kas.gitlab.com/k8s-proxy","version":"18.7.0-rc1+5ca8be73a8685a5a9ab2baeb0d3ab7c455f9f819"},"enterprise":true} \ No newline at end of file +{"version":"18.9.0-pre","revision":"dde8b248bb9","kas":{"enabled":true,"externalUrl":"wss://kas.gitlab.com","externalK8sProxyUrl":"https://kas.gitlab.com/k8s-proxy","version":"18.9.0-rc1+f6b096ad1f478a35a7335ec9b905c1230fd27b4e"},"enterprise":true} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996 deleted file mode 100644 index db8d596173..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996 +++ /dev/null @@ -1,22 +0,0 @@ -X-Runtime: 0.088022 -Strict-Transport-Security: max-age=31536000 -Ratelimit-Observed: 3 -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"03ce4f6ce1c1e8c5a31df8a44cf2fbdd" -Gitlab-Lb: haproxy-main-11-lb-gprd -Content-Security-Policy: default-src 'none' -Ratelimit-Limit: 2000 -X-Gitlab-Meta: {"correlation_id":"b57b226f741f9140a1fea54f65cb5cfd","version":"1"} -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Remaining: 1997 -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:53 GMT -Set-Cookie: _cfuvid=V0ToiOTUW0XbtWq7BirwVNfL1_YP1POMrLBnDSEWS0M-1701332633965-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Content-Type-Options: nosniff -X-Frame-Options: SAMEORIGIN -Gitlab-Sv: localhost -Content-Type: application/json -Vary: Origin, Accept-Encoding -Ratelimit-Reset: 1701332693 -Cf-Cache-Status: MISS - -{"id":6590996,"description":"Arch packaging and build files","name":"archbuild","name_with_namespace":"Troy Engel / archbuild","path":"archbuild","path_with_namespace":"troyengel/archbuild","created_at":"2018-06-03T22:53:17.388Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:troyengel/archbuild.git","http_url_to_repo":"https://gitlab.com/troyengel/archbuild.git","web_url":"https://gitlab.com/troyengel/archbuild","readme_url":"https://gitlab.com/troyengel/archbuild/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2020-12-13T18:09:32.071Z","namespace":{"id":1452515,"name":"Troy Engel","path":"troyengel","kind":"user","full_path":"troyengel","parent_id":null,"avatar_url":"https://secure.gravatar.com/avatar/b226c267929f1bcfcc446e75a025591c?s=80\u0026d=identicon","web_url":"https://gitlab.com/troyengel"},"container_registry_image_prefix":"registry.gitlab.com/troyengel/archbuild","_links":{"self":"https://gitlab.com/api/v4/projects/6590996","issues":"https://gitlab.com/api/v4/projects/6590996/issues","merge_requests":"https://gitlab.com/api/v4/projects/6590996/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/6590996/repository/branches","labels":"https://gitlab.com/api/v4/projects/6590996/labels","events":"https://gitlab.com/api/v4/projects/6590996/events","members":"https://gitlab.com/api/v4/projects/6590996/members","cluster_agents":"https://gitlab.com/api/v4/projects/6590996/cluster_agents"},"packages_enabled":null,"empty_repo":false,"archived":true,"visibility":"public","owner":{"id":1215848,"username":"troyengel","name":"Troy Engel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/b226c267929f1bcfcc446e75a025591c?s=80\u0026d=identicon","web_url":"https://gitlab.com/troyengel"},"resolve_outdated_diff_discussions":false,"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":false,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"shared_runners_enabled":true,"lfs_enabled":false,"creator_id":1215848,"import_status":"finished","open_issues_count":0,"description_html":"\u003cp data-sourcepos=\"1:1-1:30\" dir=\"auto\"\u003eArch packaging and build files\u003c/p\u003e","updated_at":"2022-07-13T21:32:12.624Z","ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":false,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":null,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"autoclose_referenced_issues":true,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"permissions":{"project_access":null,"group_access":null}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 deleted file mode 100644 index 8f829d08f0..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 +++ /dev/null @@ -1,31 +0,0 @@ -Gitlab-Sv: localhost -X-Content-Type-Options: nosniff -Gitlab-Lb: haproxy-main-25-lb-gprd -X-Total-Pages: 1 -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Observed: 5 -Ratelimit-Remaining: 1995 -Content-Security-Policy: default-src 'none' -X-Gitlab-Meta: {"correlation_id":"eeab46d836341bd4cb18e3d2e82abf97","version":"1"} -Ratelimit-Limit: 2000 -Accept-Ranges: bytes -Content-Type: application/json -X-Page: 1 -X-Frame-Options: SAMEORIGIN -X-Prev-Page: -Cf-Cache-Status: MISS -X-Total: 0 -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:54 GMT -Link: ; rel="first", ; rel="last" -X-Per-Page: 10 -Set-Cookie: _cfuvid=c5HuTPxOuSXdHSuVrXQALS.uV7WvAYfc5Mc_143EAB8-1701332634513-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Length: 2 -Vary: Origin, Accept-Encoding -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -X-Runtime: 0.069269 -Strict-Transport-Security: max-age=31536000 -Ratelimit-Reset: 1701332694 -X-Next-Page: - -[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%3Fpage=1&per_page=10&sort=asc&state=all b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%3Fpage=1&per_page=10&sort=asc&state=all deleted file mode 100644 index 99133d5f8d..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fissues%3Fpage=1&per_page=10&sort=asc&state=all +++ /dev/null @@ -1,29 +0,0 @@ -Link: ; rel="first", ; rel="last" -Ratelimit-Observed: 4 -Ratelimit-Remaining: 1996 -Gitlab-Lb: haproxy-main-04-lb-gprd -Vary: Origin, Accept-Encoding -Content-Security-Policy: default-src 'none' -X-Next-Page: -Ratelimit-Reset: 1701332694 -Etag: W/"f50a70d0fc1465a289d231f80806ced7" -X-Gitlab-Meta: {"correlation_id":"47afd74254dd7946d2b2bded87448c60","version":"1"} -X-Page: 1 -X-Prev-Page: -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:54 GMT -Cf-Cache-Status: MISS -X-Total: 1 -X-Total-Pages: 1 -Strict-Transport-Security: max-age=31536000 -Content-Type: application/json -X-Frame-Options: SAMEORIGIN -Ratelimit-Limit: 2000 -Gitlab-Sv: localhost -Set-Cookie: _cfuvid=YDWTZ5VoSuLBDZgKsBnXMyYxz.0rHJ9TBYXv5zBj24Q-1701332634294-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cache-Control: max-age=0, private, must-revalidate -X-Content-Type-Options: nosniff -X-Per-Page: 10 -X-Runtime: 0.179458 - -[{"id":11201348,"iid":2,"project_id":6590996,"title":"vpn unlimited errors","description":"updated version to 2.8.0, build and tried running `vpnu-arch`:\n\n```\nvpn-unlimited: /usr/lib/libcurl.so.3: no version information available (required by /usr/lib/libvpnu_rpc.so.1)\nvpn-unlimited: /usr/lib/libssl.so.1.0.0: no version information available (required by /usr/lib/libvpnu_enc.so.1)\nvpn-unlimited: symbol lookup error: /usr/lib/libvpnu_rpc.so.1: undefined symbol: _ZNK4Json5Value8asStringEv\n```\n","state":"closed","created_at":"2016-03-26T16:41:12.000Z","updated_at":"2016-03-27T12:19:27.000Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":10273,"username":"brauliobo","name":"Bráulio Bhavamitra","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/cd3fcb7a417c8acb989fc320b604a2a8?s=80\u0026d=identicon","web_url":"https://gitlab.com/brauliobo"},"type":"ISSUE","assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/troyengel/archbuild/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/6590996/issues/2","notes":"https://gitlab.com/api/v4/projects/6590996/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/6590996/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/6590996","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"troyengel/archbuild#2"},"severity":"UNKNOWN","moved_to_id":null,"service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1 deleted file mode 100644 index 18e8a8583f..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1 +++ /dev/null @@ -1,22 +0,0 @@ -Ratelimit-Observed: 7 -Set-Cookie: _cfuvid=_b9GQEo3CBPMs9QmGE89dBdOmbSTfnYjZlzValULQPs-1701332635000-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Strict-Transport-Security: max-age=31536000 -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:54 GMT -Gitlab-Lb: haproxy-main-50-lb-gprd -Gitlab-Sv: localhost -X-Gitlab-Meta: {"correlation_id":"da44cd0303a4e62cc52ed8de3b2adf14","version":"1"} -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Remaining: 1993 -Etag: W/"f6299e7e884cb8df8109256c086eb4e7" -X-Runtime: 0.107573 -Content-Type: application/json -Ratelimit-Reset: 1701332694 -X-Frame-Options: SAMEORIGIN -Cache-Control: max-age=0, private, must-revalidate -X-Content-Type-Options: nosniff -Ratelimit-Limit: 2000 -Cf-Cache-Status: MISS -Content-Security-Policy: default-src 'none' -Vary: Origin, Accept-Encoding - -{"id":10518914,"iid":1,"project_id":6590996,"title":"Review","description":"*Created by: cgtx*\n\n### remove patch from makedepends\n- patch is in base-devel\n- The group base-devel is assumed to be already installed when building with makepkg. Members of \"base-devel\" should not be included in makedepends arrays.\n- https://wiki.archlinux.org/index.php/Pkgbuild#makedepends\n### remove python2 from makedepends\n- python2 is a dependency of python2-setuptools. It is redundant to list it again.\n- You do not need to list packages that your software depends on if other packages your software depends on already have those packages listed in their dependency.\n- https://wiki.archlinux.org/index.php/Pkgbuild#depends\n### more simple find/delete command\n- just because\n","state":"merged","created_at":"2014-12-12T15:01:32.000Z","updated_at":"2014-12-12T15:28:38.000Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"cgtx:review","user_notes_count":1,"upvotes":0,"downvotes":0,"author":{"id":1215848,"username":"troyengel","name":"Troy Engel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/b226c267929f1bcfcc446e75a025591c?s=80\u0026d=identicon","web_url":"https://gitlab.com/troyengel"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":6590996,"target_project_id":6590996,"labels":[],"draft":false,"work_in_progress":false,"milestone":null,"merge_when_pipeline_succeeds":false,"merge_status":"cannot_be_merged","detailed_merge_status":"not_open","sha":"9006fee398299beed8f5d5086f8e6008ffc02280","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":null,"prepared_at":"2014-12-12T15:01:32.000Z","reference":"!1","references":{"short":"!1","relative":"!1","full":"troyengel/archbuild!1"},"web_url":"https://gitlab.com/troyengel/archbuild/-/merge_requests/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":true,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":false,"changes_count":"1","latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"6edcf8fc09f6c44213c892f5108d34a5255a47e1","head_sha":"9006fee398299beed8f5d5086f8e6008ffc02280","start_sha":"6edcf8fc09f6c44213c892f5108d34a5255a47e1"},"merge_error":null,"first_contribution":false,"user":{"can_merge":false}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 deleted file mode 100644 index d6f8dd4941..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 +++ /dev/null @@ -1,31 +0,0 @@ -Link: ; rel="first", ; rel="last" -Set-Cookie: _cfuvid=qK29tijoyp0AdVoHf9Lqjc8Y28h4jplJDW9hOFLfq28-1701332635229-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Cache-Control: max-age=0, private, must-revalidate -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Ratelimit-Observed: 8 -Gitlab-Sv: localhost -Content-Length: 2 -Gitlab-Lb: haproxy-main-16-lb-gprd -X-Total: 0 -Ratelimit-Remaining: 1992 -Ratelimit-Reset: 1701332695 -Ratelimit-Limit: 2000 -Vary: Origin, Accept-Encoding -X-Frame-Options: SAMEORIGIN -Content-Type: application/json -X-Content-Type-Options: nosniff -X-Next-Page: -X-Page: 1 -Strict-Transport-Security: max-age=31536000 -Accept-Ranges: bytes -Content-Security-Policy: default-src 'none' -X-Per-Page: 10 -X-Total-Pages: 1 -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:55 GMT -Cf-Cache-Status: MISS -X-Gitlab-Meta: {"correlation_id":"eb59d63fed23cdbec69308570cc49c3e","version":"1"} -X-Runtime: 0.065972 -X-Prev-Page: - -[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%3Fpage=1&per_page=10&view=simple b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%3Fpage=1&per_page=10&view=simple deleted file mode 100644 index 5339392008..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F6590996%2Fmerge_requests%3Fpage=1&per_page=10&view=simple +++ /dev/null @@ -1,29 +0,0 @@ -Vary: Origin, Accept-Encoding -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: localhost -X-Content-Type-Options: nosniff -X-Prev-Page: -Ratelimit-Reset: 1701332694 -Cache-Control: max-age=0, private, must-revalidate -Ratelimit-Limit: 2000 -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Observed: 6 -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:54 GMT -Cf-Cache-Status: MISS -Content-Type: application/json -Content-Security-Policy: default-src 'none' -Etag: W/"1a50811aa3cccb2e6a404a976422a83a" -X-Total: 1 -Ratelimit-Remaining: 1994 -Set-Cookie: _cfuvid=u.zumTkG1ayCnh_OwrT9Q1Fl3MXV9Gh98W.ma4WN2Xs-1701332634745-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Link: ; rel="first", ; rel="last" -X-Frame-Options: SAMEORIGIN -X-Page: 1 -X-Total-Pages: 1 -Gitlab-Lb: haproxy-main-05-lb-gprd -X-Gitlab-Meta: {"correlation_id":"907f9e1f94131ea7a6d1405100a8cc4b","version":"1"} -X-Next-Page: -X-Per-Page: 10 -X-Runtime: 0.078413 - -[{"id":10518914,"iid":1,"project_id":6590996,"title":"Review","description":"*Created by: cgtx*\n\n### remove patch from makedepends\n- patch is in base-devel\n- The group base-devel is assumed to be already installed when building with makepkg. Members of \"base-devel\" should not be included in makedepends arrays.\n- https://wiki.archlinux.org/index.php/Pkgbuild#makedepends\n### remove python2 from makedepends\n- python2 is a dependency of python2-setuptools. It is redundant to list it again.\n- You do not need to list packages that your software depends on if other packages your software depends on already have those packages listed in their dependency.\n- https://wiki.archlinux.org/index.php/Pkgbuild#depends\n### more simple find/delete command\n- just because\n","state":"merged","created_at":"2014-12-12T15:01:32.000Z","updated_at":"2014-12-12T15:28:38.000Z","web_url":"https://gitlab.com/troyengel/archbuild/-/merge_requests/1"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606 new file mode 100644 index 0000000000..4b202ccaf4 --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606 @@ -0,0 +1,20 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"b6cd860c9645dff485548e1592139cb2" +Gitlab-Lb: haproxy-main-38-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 31 +Ratelimit-Remaining: 1969 +Ratelimit-Reset: 1771085280 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.338588 + +{"id":79476606,"description":null,"name":"test_repo-skipped-numbers","name_with_namespace":"Forgejo / test_repo-skipped-numbers","path":"test_repo-skipped-numbers","path_with_namespace":"forgejo/test_repo-skipped-numbers","created_at":"2026-02-13T20:29:32.674Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo-skipped-numbers.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo-skipped-numbers.git","web_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers","readme_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers/-/blob/main/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2026-02-13T20:29:32.598Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo-skipped-numbers","_links":{"self":"https://gitlab.com/api/v4/projects/79476606","issues":"https://gitlab.com/api/v4/projects/79476606/issues","merge_requests":"https://gitlab.com/api/v4/projects/79476606/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/79476606/repository/branches","labels":"https://gitlab.com/api/v4/projects/79476606/labels","events":"https://gitlab.com/api/v4/projects/79476606/events","members":"https://gitlab.com/api/v4/projects/79476606/members","cluster_agents":"https://gitlab.com/api/v4/projects/79476606/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":true,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2026-02-14T20:29:32.690Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":false,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"import_url":null,"import_type":null,"import_status":"none","import_error":null,"open_issues_count":1,"description_html":"","updated_at":"2026-02-14T16:06:34.919Z","ci_default_git_depth":20,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"web_based_commit_signing_enabled":false,"permissions":{"project_access":null,"group_access":{"access_level":50,"notification_level":3}}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 new file mode 100644 index 0000000000..11a3a988d2 --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=10 @@ -0,0 +1,29 @@ +Accept-Ranges: bytes +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-30-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 33 +Ratelimit-Remaining: 1967 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 10 +X-Prev-Page: +X-Runtime: 0.066401 +X-Total: 0 +X-Total-Pages: 1 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%3Forder_by=created_at&page=1&per_page=10&sort=desc&state=all b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%3Forder_by=created_at&page=1&per_page=10&sort=desc&state=all new file mode 100644 index 0000000000..d877929b18 --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fissues%3Forder_by=created_at&page=1&per_page=10&sort=desc&state=all @@ -0,0 +1,27 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"cfd6114327ec8067d5d20d5d17c3ba48" +Gitlab-Lb: haproxy-main-40-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 32 +Ratelimit-Remaining: 1968 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 10 +X-Prev-Page: +X-Runtime: 0.241899 +X-Total: 1 +X-Total-Pages: 1 + +[{"id":184077979,"iid":2,"project_id":79476606,"title":"2nd issue","description":"","state":"opened","created_at":"2026-02-13T20:30:05.549Z","updated_at":"2026-02-13T20:30:05.549Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":2005797,"username":"oliverpool","public_email":"","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":0,"downvotes":0,"start_date":null,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"","_links":{"self":"https://gitlab.com/api/v4/projects/79476606/issues/2","notes":"https://gitlab.com/api/v4/projects/79476606/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/79476606/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/79476606","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo-skipped-numbers#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1 new file mode 100644 index 0000000000..7e3cd6054b --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1 @@ -0,0 +1,20 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"fd4f08163e3a4f801ca3af1abd07f500" +Gitlab-Lb: haproxy-main-35-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 35 +Ratelimit-Remaining: 1965 +Ratelimit-Reset: 1771085280 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.404174 + +{"id":455684411,"iid":1,"project_id":79476606,"title":"cleanup README.md","description":"","state":"opened","created_at":"2026-02-13T20:31:06.580Z","updated_at":"2026-02-13T20:31:10.927Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"main","source_branch":"mr-1","user_notes_count":0,"upvotes":0,"downvotes":0,"author":{"id":2005797,"username":"oliverpool","public_email":"","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":79476606,"target_project_id":79476606,"labels":[],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":null,"merge_when_pipeline_succeeds":false,"merge_status":"can_be_merged","detailed_merge_status":"mergeable","merge_after":null,"sha":"df1f488cbe903607e5cd80220f8e12db90598490","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2026-02-13T20:31:10.921Z","reference":"!1","references":{"short":"!1","relative":"!1","full":"forgejo/test_repo-skipped-numbers!1"},"web_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers/-/merge_requests/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":false,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":"1","latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"80db4c60fb87dddbcf7158c5a5bbbbd2e8d182cb","head_sha":"df1f488cbe903607e5cd80220f8e12db90598490","start_sha":"80db4c60fb87dddbcf7158c5a5bbbbd2e8d182cb"},"merge_error":null,"first_contribution":true,"user":{"can_merge":false}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 new file mode 100644 index 0000000000..8710ee04ff --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=10 @@ -0,0 +1,29 @@ +Accept-Ranges: bytes +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Length: 2 +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-53-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 36 +Ratelimit-Remaining: 1964 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 10 +X-Prev-Page: +X-Runtime: 0.063873 +X-Total: 0 +X-Total-Pages: 1 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%3Fpage=1&per_page=10&view=simple b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%3Fpage=1&per_page=10&view=simple new file mode 100644 index 0000000000..b39e3a3526 --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2F79476606%2Fmerge_requests%3Fpage=1&per_page=10&view=simple @@ -0,0 +1,27 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"c5f9d81ed33b3c752a17ced50fddb103" +Gitlab-Lb: haproxy-main-17-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 34 +Ratelimit-Remaining: 1966 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Page: 1 +X-Per-Page: 10 +X-Prev-Page: +X-Runtime: 0.084126 +X-Total: 1 +X-Total-Pages: 1 + +[{"id":455684411,"iid":1,"project_id":79476606,"title":"cleanup README.md","description":"","state":"opened","created_at":"2026-02-13T20:31:06.580Z","updated_at":"2026-02-13T20:31:10.927Z","web_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers/-/merge_requests/1"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo-skipped-numbers b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo-skipped-numbers new file mode 100644 index 0000000000..5835b34b49 --- /dev/null +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo-skipped-numbers @@ -0,0 +1,20 @@ +Cache-Control: max-age=0, private, must-revalidate +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Etag: W/"b6cd860c9645dff485548e1592139cb2" +Gitlab-Lb: haproxy-main-16-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 30 +Ratelimit-Remaining: 1970 +Ratelimit-Reset: 1771085280 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.218526 + +{"id":79476606,"description":null,"name":"test_repo-skipped-numbers","name_with_namespace":"Forgejo / test_repo-skipped-numbers","path":"test_repo-skipped-numbers","path_with_namespace":"forgejo/test_repo-skipped-numbers","created_at":"2026-02-13T20:29:32.674Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo-skipped-numbers.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo-skipped-numbers.git","web_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers","readme_url":"https://gitlab.com/forgejo/test_repo-skipped-numbers/-/blob/main/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2026-02-13T20:29:32.598Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo-skipped-numbers","_links":{"self":"https://gitlab.com/api/v4/projects/79476606","issues":"https://gitlab.com/api/v4/projects/79476606/issues","merge_requests":"https://gitlab.com/api/v4/projects/79476606/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/79476606/repository/branches","labels":"https://gitlab.com/api/v4/projects/79476606/labels","events":"https://gitlab.com/api/v4/projects/79476606/events","members":"https://gitlab.com/api/v4/projects/79476606/members","cluster_agents":"https://gitlab.com/api/v4/projects/79476606/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":true,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2026-02-14T20:29:32.690Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":false,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"import_url":null,"import_type":null,"import_status":"none","import_error":null,"open_issues_count":1,"description_html":"","updated_at":"2026-02-14T16:06:34.919Z","ci_default_git_depth":20,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"web_based_commit_signing_enabled":false,"permissions":{"project_access":null,"group_access":{"access_level":50,"notification_level":3}}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Ftroyengel%252Farchbuild b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Ftroyengel%252Farchbuild deleted file mode 100644 index a8c2882c26..0000000000 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fprojects%2Ftroyengel%252Farchbuild +++ /dev/null @@ -1,22 +0,0 @@ -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:53 GMT -Gitlab-Lb: haproxy-main-41-lb-gprd -Cache-Control: max-age=0, private, must-revalidate -Referrer-Policy: strict-origin-when-cross-origin -Cf-Cache-Status: MISS -X-Content-Type-Options: nosniff -Set-Cookie: _cfuvid=r78xThY2IPR6QvHnea1t_L7DbvuQp4.HWOiG1cKTWUg-1701332633720-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Ratelimit-Limit: 2000 -Strict-Transport-Security: max-age=31536000 -Vary: Origin, Accept-Encoding -X-Gitlab-Meta: {"correlation_id":"4c3e0f8b5858454b6e138ecae9902a8d","version":"1"} -X-Runtime: 0.097047 -Ratelimit-Observed: 2 -Ratelimit-Remaining: 1998 -X-Frame-Options: SAMEORIGIN -Content-Security-Policy: default-src 'none' -Etag: W/"03ce4f6ce1c1e8c5a31df8a44cf2fbdd" -Content-Type: application/json -Gitlab-Sv: localhost -Ratelimit-Reset: 1701332693 - -{"id":6590996,"description":"Arch packaging and build files","name":"archbuild","name_with_namespace":"Troy Engel / archbuild","path":"archbuild","path_with_namespace":"troyengel/archbuild","created_at":"2018-06-03T22:53:17.388Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:troyengel/archbuild.git","http_url_to_repo":"https://gitlab.com/troyengel/archbuild.git","web_url":"https://gitlab.com/troyengel/archbuild","readme_url":"https://gitlab.com/troyengel/archbuild/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2020-12-13T18:09:32.071Z","namespace":{"id":1452515,"name":"Troy Engel","path":"troyengel","kind":"user","full_path":"troyengel","parent_id":null,"avatar_url":"https://secure.gravatar.com/avatar/b226c267929f1bcfcc446e75a025591c?s=80\u0026d=identicon","web_url":"https://gitlab.com/troyengel"},"container_registry_image_prefix":"registry.gitlab.com/troyengel/archbuild","_links":{"self":"https://gitlab.com/api/v4/projects/6590996","issues":"https://gitlab.com/api/v4/projects/6590996/issues","merge_requests":"https://gitlab.com/api/v4/projects/6590996/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/6590996/repository/branches","labels":"https://gitlab.com/api/v4/projects/6590996/labels","events":"https://gitlab.com/api/v4/projects/6590996/events","members":"https://gitlab.com/api/v4/projects/6590996/members","cluster_agents":"https://gitlab.com/api/v4/projects/6590996/cluster_agents"},"packages_enabled":null,"empty_repo":false,"archived":true,"visibility":"public","owner":{"id":1215848,"username":"troyengel","name":"Troy Engel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/b226c267929f1bcfcc446e75a025591c?s=80\u0026d=identicon","web_url":"https://gitlab.com/troyengel"},"resolve_outdated_diff_discussions":false,"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":false,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"shared_runners_enabled":true,"lfs_enabled":false,"creator_id":1215848,"import_status":"finished","open_issues_count":0,"description_html":"\u003cp data-sourcepos=\"1:1-1:30\" dir=\"auto\"\u003eArch packaging and build files\u003c/p\u003e","updated_at":"2022-07-13T21:32:12.624Z","ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":false,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":null,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"autoclose_referenced_issues":true,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"permissions":{"project_access":null,"group_access":null}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fversion b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fversion index eb6df2ffb1..19ac3aa53f 100644 --- a/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fversion +++ b/services/migrations/testdata/gitlab/skipped_issue_number/GET_%2Fapi%2Fv4%2Fversion @@ -1,22 +1,20 @@ -Ratelimit-Observed: 1 -X-Gitlab-Meta: {"correlation_id":"aa75720bd9c597c7f2f886a4042d1f80","version":"1"} -Etag: W/"4e5c0a031c3aacb6ba0a3c19e67d7592" -X-Content-Type-Options: nosniff -Ratelimit-Limit: 2000 -Ratelimit-Resettime: Thu, 30 Nov 2023 08:24:53 GMT -X-Runtime: 0.039899 -Ratelimit-Remaining: 1999 -Set-Cookie: _cfuvid=7OAEitQ3J0BOxrXk2pMBApFg1KFnz5aBVqOY7mHwLRk-1701332633452-0-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -Gitlab-Sv: localhost -Cf-Cache-Status: MISS -Vary: Origin, Accept-Encoding -X-Frame-Options: SAMEORIGIN Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Referrer-Policy: strict-origin-when-cross-origin -Ratelimit-Reset: 1701332693 -Gitlab-Lb: haproxy-main-39-lb-gprd +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' Content-Type: application/json +Etag: W/"eb8caeed3eb2f6feb10c7f2b9610d346" +Gitlab-Lb: haproxy-main-52-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 29 +Ratelimit-Remaining: 1971 +Ratelimit-Reset: 1771055640 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.060644 -{"version":"16.7.0-pre","revision":"acd848a9228","kas":{"enabled":true,"externalUrl":"wss://kas.gitlab.com","version":"v16.7.0-rc2"},"enterprise":true} \ No newline at end of file +{"version":"18.9.0-pre","revision":"dde8b248bb9","kas":{"enabled":true,"externalUrl":"wss://kas.gitlab.com","externalK8sProxyUrl":"https://kas.gitlab.com/k8s-proxy","version":"18.9.0-rc1+f6b096ad1f478a35a7335ec9b905c1230fd27b4e"},"enterprise":true} \ No newline at end of file