From 43fb5f6e7fd0b98407938afee3b4f0cd9ade9d35 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Mon, 10 Feb 2025 16:31:23 +0800 Subject: [PATCH] git_misc: Abstract away get_recent_commits --- git_misc.go | 24 ++++++++++++++++++++++++ handle_repo_index.go | 17 ++--------------- diff --git a/git_misc.go b/git_misc.go index aa662b1b7b77ecffc338ecf6b3d11702e2698094..4c8ea4d8b1c6e05a7c7c8ee4d7cd754de441ca83 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 @@ display_git_tree = append(display_git_tree, display_git_tree_entry) } 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 +} diff --git a/handle_repo_index.go b/handle_repo_index.go index 70aebe6cc53fe678584657dbf83ca3dae6581ffd..cdcc0922cf4845c6f80673b1d438698550a2064b 100644 --- a/handle_repo_index.go +++ b/handle_repo_index.go @@ -2,9 +2,6 @@ package main import ( "net/http" - - "github.com/go-git/go-git/v5" - "github.com/go-git/go-git/v5/plumbing/object" ) func handle_repo_index(w http.ResponseWriter, r *http.Request) { @@ -24,20 +21,10 @@ return } data["ref"] = head.Name().Short() head_hash := head.Hash() - commit_iter, err := repo.Log(&git.LogOptions{From: head_hash}) + recent_commits, err := get_recent_commits(repo, head_hash) if err != nil { - _, _ = w.Write([]byte("Error getting repo commits: " + err.Error())) + _, _ = w.Write([]byte("Error getting recent commits: " + err.Error())) return - } - recent_commits := make([]*object.Commit, 0) - defer commit_iter.Close() - for range 3 { - this_recent_commit, err := commit_iter.Next() - if err != nil { - _, _ = w.Write([]byte("Error getting a recent commit: " + err.Error())) - return - } - recent_commits = append(recent_commits, this_recent_commit) } data["commits"] = recent_commits commit_object, err := repo.CommitObject(head_hash) -- 2.48.1