aboutsummaryrefslogtreecommitdiff
path: root/git_misc.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-02-10 16:31:23 +0800
committerRunxi Yu <me@runxiyu.org>2025-02-10 16:31:23 +0800
commit43fb5f6e7fd0b98407938afee3b4f0cd9ade9d35 (patch)
tree664786779e88379cc1e440a030c7c5e4638597ee /git_misc.go
parentgit_misc: Abstract git.PlainOpen into open_git_repo (diff)
downloadforge-43fb5f6e7fd0b98407938afee3b4f0cd9ade9d35.tar.gz
forge-43fb5f6e7fd0b98407938afee3b4f0cd9ade9d35.tar.zst
forge-43fb5f6e7fd0b98407938afee3b4f0cd9ade9d35.zip
git_misc: Abstract away get_recent_commits
Diffstat (limited to 'git_misc.go')
-rw-r--r--git_misc.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/git_misc.go b/git_misc.go
index aa662b1..4c8ea4d 100644
--- a/git_misc.go
+++ b/git_misc.go
@@ -1,10 +1,13 @@
package main
import (
+ "errors"
"path/filepath"
"github.com/go-git/go-git/v5"
+ "github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/plumbing/object"
+ "go.lindenii.runxiyu.org/lindenii-common/misc"
)
func open_git_repo(category_name, repo_name string) (*git.Repository, error) {
@@ -31,3 +34,24 @@ func build_display_git_tree(tree *object.Tree) []display_git_tree_entry_t {
}
return display_git_tree
}
+
+var err_get_recent_commits = errors.New("Error getting recent commits:")
+
+func get_recent_commits(repo *git.Repository, head_hash plumbing.Hash) (recent_commits []*object.Commit, err error) {
+ commit_iter, err := repo.Log(&git.LogOptions{From: head_hash})
+ if err != nil {
+ err = misc.Wrap_one_error(err_get_recent_commits, err)
+ return nil, err
+ }
+ recent_commits = make([]*object.Commit, 0)
+ defer commit_iter.Close()
+ for range 3 {
+ this_recent_commit, err := commit_iter.Next()
+ if err != nil {
+ err = misc.Wrap_one_error(err_get_recent_commits, err)
+ return nil, err
+ }
+ recent_commits = append(recent_commits, this_recent_commit)
+ }
+ return
+}