From cac176daa985b032f08758ae54c83eea659f9bc3 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Tue, 11 Feb 2025 19:04:05 +0800 Subject: [PATCH] repo_commit: Add a commit info page --- handle_repo_commit.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 1 + static/style.css | 7 +++++++ templates/repo_commit.html.tmpl | 44 ++++++++++++++++++++++++++++++++++++++++++++ diff --git a/handle_repo_commit.go b/handle_repo_commit.go new file mode 100644 index 0000000000000000000000000000000000000000..c7bdf9fc97bd6bf52f59cd5f1692ec4c52c3c3ff --- /dev/null +++ b/handle_repo_commit.go @@ -0,0 +1,53 @@ +package main + +import ( + "net/http" + + "github.com/go-git/go-git/v5/plumbing" +) + +func handle_repo_commit(w http.ResponseWriter, r *http.Request) { + data := make(map[string]any) + // TODO: Sanitize path values + group_name, repo_name, commit_id_string := r.PathValue("group_name"), r.PathValue("repo_name"), r.PathValue("commit_id") + data["group_name"], data["repo_name"], data["commit_id"] = group_name, repo_name, commit_id_string + repo, err := open_git_repo(group_name, repo_name) + if err != nil { + _, _ = w.Write([]byte("Error opening repo: " + err.Error())) + return + } + commit_id := plumbing.NewHash(commit_id_string) + commit_object, err := repo.CommitObject(commit_id) + if err != nil { + _, _ = w.Write([]byte("Error getting commit object: " + err.Error())) + return + } + data["commit_object"] = commit_object + + parent_commit_object, err := commit_object.Parent(0) + if err != nil { + _, _ = w.Write([]byte("Error getting parent commit object: " + err.Error())) + return + } + data["parent_commit_object"] = parent_commit_object + + patch, err := parent_commit_object.Patch(commit_object) + if err != nil { + _, _ = w.Write([]byte("Error getting patch of commit: " + err.Error())) + return + } + data["patch"] = patch + + /* + for _, file_patch := range patch.FilePatches() { + for _, chunk := range file_patch.Chunks() { + } + } + */ + + err = templates.ExecuteTemplate(w, "repo_commit", data) + if err != nil { + _, _ = w.Write([]byte("Error rendering template: " + err.Error())) + return + } +} diff --git a/main.go b/main.go index e8456fb9a20182358a3ffd70830616439bb0c5d8..02e48a349e1a02c4636724965e51eb8828b979f8 100644 --- a/main.go +++ b/main.go @@ -39,6 +39,7 @@ http.HandleFunc("/g/{group_name}/repos/{repo_name}/{$}", handle_repo_index) http.HandleFunc("/g/{group_name}/repos/{repo_name}/tree/{ref}/{rest...}", handle_repo_tree) http.HandleFunc("/g/{group_name}/repos/{repo_name}/raw/{ref}/{rest...}", handle_repo_raw) http.HandleFunc("/g/{group_name}/repos/{repo_name}/log/{ref}/", handle_repo_log) + http.HandleFunc("/g/{group_name}/repos/{repo_name}/commit/{commit_id}/", handle_repo_commit) listener, err := net.Listen(config.HTTP.Net, config.HTTP.Addr) if err != nil { diff --git a/static/style.css b/static/style.css index 94084dc9b87299cf60ab0fcad9fdc2d608f7dde5..a57fad7f1426d09e2878b0a027eb10b2c58b8835 100644 --- a/static/style.css +++ b/static/style.css @@ -49,6 +49,10 @@ } .padding-wrapper > * { width: 100%; } +.padding-wrapper > table { + width: auto; + max-width: 100%; +} a:link, a:visited { text-decoration-color: var(--text-decoration-color); color: var(--link-color); @@ -69,6 +73,9 @@ border: var(--lighter-border-color) solid 1px; } th { background-color: var(--lighter-box-background-color); +} +th[scope=row] { + text-align: left; } tr.title-row > th { background-color: var(--darker-box-background-color); diff --git a/templates/repo_commit.html.tmpl b/templates/repo_commit.html.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..03625aa2f1adedb17270eceb99d3d0f6f08e46fe --- /dev/null +++ b/templates/repo_commit.html.tmpl @@ -0,0 +1,44 @@ +{{- define "repo_commit" -}} + + + + {{ template "head_common" . }} + {{ .group_name }}/repos/{{ .repo_name }} – Lindenii Forge + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Commit {{ .commit_id }}
Author{{ .commit_object.Author.Name }} <{{ .commit_object.Author.Email }}>
Author Date{{ .commit_object.Author.When.Format "Mon, 02 Jan 2006 15:04:05 -0700" }}
Committer{{ .commit_object.Committer.Name }} <{{ .commit_object.Committer.Email }}>
Committer Date{{ .commit_object.Committer.When.Format "Mon, 02 Jan 2006 15:04:05 -0700" }}
+
{{ .patch }}
+

+

+
+ + + +{{- end -}} -- 2.48.1