diff --git a/pkg/provider/git.go b/pkg/provider/git.go index ec351192b4aef4529a1134aff88aa23eab4a445d..873da07c74b9e16a5d086d90126ff16c40f9f4ad 100644 --- a/pkg/provider/git.go +++ b/pkg/provider/git.go @@ -22,13 +22,14 @@ import ( var PVERSION = "dev" type Repository struct { - defaultBranch string - taggerName string - taggerEmail string - remoteName string - auth transport.AuthMethod - repo *git.Repository - pushOptions map[string]string + defaultBranch string + taggerName string + taggerEmail string + remoteName string + auth transport.AuthMethod + repo *git.Repository + pushOptions map[string]string + orderLogsByCommitTime bool } func (repo *Repository) Init(config map[string]string) error { @@ -107,9 +108,13 @@ func (repo *Repository) GetCommits(fromSha, toSha string) ([]*semrel.RawCommit, return nil, err } + logOrder := git.LogOrderDefault + if repo.orderLogsByCommitTime { + logOrder = git.LogOrderCommitterTime + } commits, err := repo.repo.Log(&git.LogOptions{ From: *toHash, - Order: git.LogOrderCommitterTime, + Order: logOrder, }) if err != nil { return nil, err diff --git a/pkg/provider/git_test.go b/pkg/provider/git_test.go index 6ca446e772e8b665e61da44eac7cc13a38f3cc12..8e9f66d77d585e02f71f8a59df9f1db91f4b4bf6 100644 --- a/pkg/provider/git_test.go +++ b/pkg/provider/git_test.go @@ -27,6 +27,7 @@ func TestGit(t *testing.T) { t.Run("GetReleases", getReleases) t.Run("GetCommits", getCommits) t.Run("GetCommitsNoFFMerge", getCommitsNoFFMerge) + t.Run("GetCommitsNoFFMergeCTime", getCommitsNoFFMergeCTime) t.Run("CreateRelease", createRelease) } @@ -217,6 +218,22 @@ func getCommitsNoFFMerge(t *testing.T) { initialCommitSha := releases[0].GetSHA() commits, err := repo.GetCommits(initialCommitSha, "master") require.NoError(err) + require.Len(commits, 1) +} + +func getCommitsNoFFMergeCTime(t *testing.T) { + require := require.New(t) + dir, err := os.MkdirTemp("", "provider-git") + require.NoError(err) + repo, err := cloneRepo(dir, "http://localhost:3000/test/no_ff_merge.git") + repo.orderLogsByCommitTime = true + require.NoError(err) + releases, err := repo.GetReleases("") + require.NoError(err) + require.Len(releases, 1) + initialCommitSha := releases[0].GetSHA() + commits, err := repo.GetCommits(initialCommitSha, "master") + require.NoError(err) require.Len(commits, 2) } diff --git a/test/gitea/gitea.db b/test/gitea/gitea.db index 8d64b0bfaf4c8abdff24e96735ddd259677ac6a0..a1e939b23233e60bf9d51445b23a549fea821b4d 100644 Binary files a/test/gitea/gitea.db and b/test/gitea/gitea.db differ