From 3e3342ad2624843e4dfc61d468dfa80345dc2aca Mon Sep 17 00:00:00 2001
From: dannylongeuay <dannylongeuay@yahoo.com>
Date: Sat, 27 Apr 2024 14:33:30 -0700
Subject: [PATCH] chore(*): :wrench: update docs and add another test

---
 README.md                | 12 ++++++++++++
 pkg/provider/git_test.go | 21 +++++++++++++++++++--
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index a0aafb2..09236ac 100644
--- a/README.md
+++ b/README.md
@@ -43,6 +43,7 @@ To use this plugin you need to include the following block in your
 | auth_private_key |                             | The path to an SSH private key file.               |
 | git_path         | .                           | The path to the Git repository.                    |
 | push_options     |                             | The push options for the git tag push.             |
+| log_order        | dfs                         | The log order traversal algorithm.                 |
 
 ### Authentication
 
@@ -70,6 +71,17 @@ For this method you'll need to set `auth_username` and
 `auth_private_key`. If your private key uses a password then you'll
 also need to set `auth_password`.
 
+### Log Order Options
+
+log_order=dfs (Default) - Ordering by depth-first search in pre-order
+
+log_order=dfs_post - Ordering by depth-first search in post-order (useful to traverse
+history in chronological order)
+
+log_order=bfs - Ordering by breadth-first search
+
+log_order=ctime - Ordering by committer time (more compatible with `git log`)
+
 ## Licence
 
 The [MIT License (MIT)](http://opensource.org/licenses/MIT)
diff --git a/pkg/provider/git_test.go b/pkg/provider/git_test.go
index 16ad0ef..552740e 100644
--- a/pkg/provider/git_test.go
+++ b/pkg/provider/git_test.go
@@ -26,7 +26,8 @@ func TestGit(t *testing.T) {
 	t.Run("GetInfo", getInfo)
 	t.Run("GetReleases", getReleases)
 	t.Run("GetCommits", getCommits)
-	t.Run("GetCommitsNoFFMerge", getCommitsNoFFMerge)
+	t.Run("GetCommitsNoFFMergeDFS", getCommitsNoFFMergeDFS)
+	t.Run("GetCommitsNoFFMergeDFSPost", getCommitsNoFFMergeDFSPost)
 	t.Run("GetCommitsNoFFMergeCTime", getCommitsNoFFMergeCTime)
 	t.Run("CreateRelease", createRelease)
 }
@@ -206,7 +207,7 @@ func getCommits(t *testing.T) {
 	}
 }
 
-func getCommitsNoFFMerge(t *testing.T) {
+func getCommitsNoFFMergeDFS(t *testing.T) {
 	require := require.New(t)
 	dir, err := os.MkdirTemp("", "provider-git")
 	require.NoError(err)
@@ -237,6 +238,22 @@ func getCommitsNoFFMergeCTime(t *testing.T) {
 	require.Len(commits, 2)
 }
 
+func getCommitsNoFFMergeDFSPost(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.logOrder = git.LogOrderCommitterTime
+	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)
+}
+
 func createRelease(t *testing.T) {
 	require := require.New(t)
 	repo, err := createRepo()
-- 
GitLab