diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-11 13:33:03 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-11 13:34:54 +0800 |
commit | 49654f1d302fab1b7fd2c257f87c150346ca2663 (patch) | |
tree | 2bd067d2253507e5a2a29106fcd235c02119f35f /git_misc.go | |
parent | repo_{raw,tree}: Redirect if visiting file but path_spec ends with slash (diff) | |
download | forge-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.go | 31 |
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 } |