diff --git a/go.mod b/go.mod index 7ab5b9d5f64620b1a7237155707c65325419a327..57434e090f245ca6f325bad5c6af429277656582 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.15 require ( github.com/Masterminds/semver/v3 v3.1.0 - github.com/go-semantic-release/semantic-release/v2 v2.5.0 + github.com/go-semantic-release/semantic-release/v2 v2.7.0 github.com/stretchr/testify v1.6.1 github.com/xanzy/go-gitlab v0.34.2 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect diff --git a/go.sum b/go.sum index 63cc0d87f15fce4fd085c27b0b96ff1242efa147..c0f58268f8c1d41e1589ad69d872050f16eb3fb6 100644 --- a/go.sum +++ b/go.sum @@ -60,6 +60,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-semantic-release/semantic-release/v2 v2.5.0 h1:QDE5x/D/Rt7c1fcgZ3EGAgKOaBuK30R+SX4oPL8b6QI= github.com/go-semantic-release/semantic-release/v2 v2.5.0/go.mod h1:2YcQ8CPUnSXnw5Krcakz8gDMrkd+eF69DySp8jAIbQI= +github.com/go-semantic-release/semantic-release/v2 v2.7.0 h1:oJSHMjiCPXH9J+bHhtK+eM0R8k/VZvD9JwvzwYkDLZo= +github.com/go-semantic-release/semantic-release/v2 v2.7.0/go.mod h1:2YcQ8CPUnSXnw5Krcakz8gDMrkd+eF69DySp8jAIbQI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= diff --git a/pkg/provider/gitlab.go b/pkg/provider/gitlab.go index 07221c2fae33e5b7c573daf2925efbcc55ab491c..c5c808f04e9e5586f451714c0b03f8f9623b8d05 100644 --- a/pkg/provider/gitlab.go +++ b/pkg/provider/gitlab.go @@ -83,14 +83,14 @@ func (repo *GitLabRepository) GetInfo() (*provider.RepositoryInfo, error) { }, nil } -func (repo *GitLabRepository) GetCommits(sha string) ([]*semrel.RawCommit, error) { +func (repo *GitLabRepository) GetCommits(fromSha, toSha string) ([]*semrel.RawCommit, error) { opts := &gitlab.ListCommitsOptions{ ListOptions: gitlab.ListOptions{ Page: 1, PerPage: 100, }, - RefName: gitlab.String(fmt.Sprintf("%s...%s", repo.branch, sha)), - All: gitlab.Bool(true), + // No Matter the order ofr fromSha and toSha gitlab always returns commits in reverse chronological order + RefName: gitlab.String(fmt.Sprintf("%s...%s", fromSha, toSha)), } allCommits := make([]*semrel.RawCommit, 0) @@ -109,7 +109,10 @@ func (repo *GitLabRepository) GetCommits(sha string) ([]*semrel.RawCommit, error }) } - if resp.CurrentPage >= resp.TotalPages { + // We cannot always rely on the total pages header + // https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/23931 + // if resp.CurrentPage >= resp.TotalPages { + if resp.NextPage == 0 { break } diff --git a/pkg/provider/gitlab_test.go b/pkg/provider/gitlab_test.go index 49b5177a128a3c9b3c21e870f9f4d1bb9eea6a89..1381dd0728aa469b87dbce9c5f99812c8689c091 100644 --- a/pkg/provider/gitlab_test.go +++ b/pkg/provider/gitlab_test.go @@ -139,7 +139,7 @@ func TestGitlabGetInfo(t *testing.T) { func TestGitlabGetCommits(t *testing.T) { repo, ts := getNewGitlabTestRepo(t) defer ts.Close() - commits, err := repo.GetCommits("") + commits, err := repo.GetCommits("", "") require.NoError(t, err) require.Len(t, commits, 4)