aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--git_misc.go24
-rw-r--r--handle_repo_index.go17
2 files changed, 26 insertions, 15 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
+}
diff --git a/handle_repo_index.go b/handle_repo_index.go
index 70aebe6..cdcc092 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,21 +21,11 @@ func handle_repo_index(w http.ResponseWriter, r *http.Request) {
}
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)
if err != nil {