aboutsummaryrefslogtreecommitdiff
path: root/http_handle_repo_log.go
diff options
context:
space:
mode:
Diffstat (limited to 'http_handle_repo_log.go')
-rw-r--r--http_handle_repo_log.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/http_handle_repo_log.go b/http_handle_repo_log.go
new file mode 100644
index 0000000..6a3f446
--- /dev/null
+++ b/http_handle_repo_log.go
@@ -0,0 +1,38 @@
+package main
+
+import (
+ "net/http"
+
+ "github.com/go-git/go-git/v5/plumbing"
+)
+
+// TODO: I probably shouldn't include *all* commits here...
+func handle_repo_log(w http.ResponseWriter, r *http.Request, params map[string]string) {
+ data := make(map[string]any)
+ data["global"] = global_data
+ group_name, repo_name, ref_name := params["group_name"], params["repo_name"], params["ref"]
+ data["group_name"], data["repo_name"], data["ref"] = group_name, repo_name, ref_name
+ repo, err := open_git_repo(r.Context(), group_name, repo_name)
+ if err != nil {
+ _, _ = w.Write([]byte("Error opening repo: " + err.Error()))
+ return
+ }
+ ref, err := repo.Reference(plumbing.NewBranchReferenceName(ref_name), true)
+ if err != nil {
+ _, _ = w.Write([]byte("Error getting repo reference: " + err.Error()))
+ return
+ }
+ ref_hash := ref.Hash()
+ commits, err := get_recent_commits(repo, ref_hash, -1)
+ if err != nil {
+ _, _ = w.Write([]byte("Error getting recent commits: " + err.Error()))
+ return
+ }
+ data["commits"] = commits
+
+ err = templates.ExecuteTemplate(w, "repo_log", data)
+ if err != nil {
+ _, _ = w.Write([]byte("Error rendering template: " + err.Error()))
+ return
+ }
+}