aboutsummaryrefslogtreecommitdiff
path: root/git_misc.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-02-11 13:33:03 +0800
committerRunxi Yu <me@runxiyu.org>2025-02-11 13:34:54 +0800
commit49654f1d302fab1b7fd2c257f87c150346ca2663 (patch)
tree2bd067d2253507e5a2a29106fcd235c02119f35f /git_misc.go
parentrepo_{raw,tree}: Redirect if visiting file but path_spec ends with slash (diff)
downloadforge-49654f1d302fab1b7fd2c257f87c150346ca2663.tar.gz
forge-49654f1d302fab1b7fd2c257f87c150346ca2663.tar.zst
forge-49654f1d302fab1b7fd2c257f87c150346ca2663.zip
repo_log: Add a log
Diffstat (limited to 'git_misc.go')
-rw-r--r--git_misc.go31
1 files changed, 22 insertions, 9 deletions
diff --git a/git_misc.go b/git_misc.go
index db3982b..a5bcc9e 100644
--- a/git_misc.go
+++ b/git_misc.go
@@ -39,7 +39,7 @@ func build_display_git_tree(tree *object.Tree) []display_git_tree_entry_t {
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) {
+func get_recent_commits(repo *git.Repository, head_hash plumbing.Hash, n int) (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)
@@ -47,15 +47,28 @@ func get_recent_commits(repo *git.Repository, head_hash plumbing.Hash) (recent_c
}
recent_commits = make([]*object.Commit, 0)
defer commit_iter.Close()
- for range 3 {
- this_recent_commit, err := commit_iter.Next()
- if errors.Is(err, io.EOF) {
- return recent_commits, nil
- } else if err != nil {
- err = misc.Wrap_one_error(err_get_recent_commits, err)
- return nil, err
+ if n < 0 {
+ for {
+ this_recent_commit, err := commit_iter.Next()
+ if errors.Is(err, io.EOF) {
+ return recent_commits, nil
+ } else if err != nil {
+ err = misc.Wrap_one_error(err_get_recent_commits, err)
+ return nil, err
+ }
+ recent_commits = append(recent_commits, this_recent_commit)
+ }
+ } else {
+ for range n {
+ this_recent_commit, err := commit_iter.Next()
+ if errors.Is(err, io.EOF) {
+ return recent_commits, nil
+ } else if err != nil {
+ err = misc.Wrap_one_error(err_get_recent_commits, err)
+ return nil, err
+ }
+ recent_commits = append(recent_commits, this_recent_commit)
}
- recent_commits = append(recent_commits, this_recent_commit)
}
return
}