From cfc8bd2bd3930fc91847a71a8d0092c2c85b0f4a Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Thu, 13 Feb 2025 09:19:54 +0800 Subject: [PATCH] repo_index: Add repo descriptions --- git_misc.go | 9 +++++---- http_handle_repo_commit.go | 3 ++- http_handle_repo_index.go | 3 ++- http_handle_repo_log.go | 3 ++- http_handle_repo_raw.go | 3 ++- http_handle_repo_tree.go | 4 +++- templates/repo_index.html.tmpl | 10 ++++++++++ diff --git a/git_misc.go b/git_misc.go index c153534f6838b06a96441ecaefe4a10d8241ba10..7b7febb71d1305087778387b50e9ed9beaad888f 100644 --- a/git_misc.go +++ b/git_misc.go @@ -18,13 +18,14 @@ err_getting_patch_of_commit = errors.New("Error getting patch of commit") err_getting_parent_commit_object = errors.New("Error getting parent commit object") ) -func open_git_repo(ctx context.Context, group_name, repo_name string) (*git.Repository, error) { +func open_git_repo(ctx context.Context, group_name, repo_name string) (repo *git.Repository, description string, err error) { var fs_path string - err := database.QueryRow(ctx, "SELECT r.filesystem_path FROM repos r JOIN groups g ON r.group_id = g.id WHERE g.name = $1 AND r.name = $2;", group_name, repo_name).Scan(&fs_path) + err = database.QueryRow(ctx, "SELECT r.filesystem_path, r.description FROM repos r JOIN groups g ON r.group_id = g.id WHERE g.name = $1 AND r.name = $2;", group_name, repo_name).Scan(&fs_path, &description) if err != nil { - return nil, err + return nil, "", err } - return git.PlainOpen(fs_path) + repo, err = git.PlainOpen(fs_path) + return } type display_git_tree_entry_t struct { diff --git a/http_handle_repo_commit.go b/http_handle_repo_commit.go index 1a84862ef827ee8a448c8d43df77afb3a8896064..7469448c58dda107c0ad754b85660ac2a6e99c48 100644 --- a/http_handle_repo_commit.go +++ b/http_handle_repo_commit.go @@ -19,11 +19,12 @@ } func handle_repo_commit(w http.ResponseWriter, r *http.Request, params map[string]any) { group_name, repo_name, commit_id_specified_string := params["group_name"].(string), params["repo_name"].(string), params["commit_id"].(string) - repo, err := open_git_repo(r.Context(), group_name, repo_name) + repo, description, err := open_git_repo(r.Context(), group_name, repo_name) if err != nil { fmt.Fprintln(w, "Error opening repo:", err.Error()) return } + params["repo_description"] = description commit_id_specified_string_without_suffix := strings.TrimSuffix(commit_id_specified_string, ".patch") commit_id := plumbing.NewHash(commit_id_specified_string_without_suffix) commit_object, err := repo.CommitObject(commit_id) diff --git a/http_handle_repo_index.go b/http_handle_repo_index.go index a3920b1c3312863b6dce47f6e8e4086d439958d9..b0106707592513afdf57815d2a74bedb88ec087d 100644 --- a/http_handle_repo_index.go +++ b/http_handle_repo_index.go @@ -8,11 +8,12 @@ ) func handle_repo_index(w http.ResponseWriter, r *http.Request, params map[string]any) { group_name, repo_name := params["group_name"].(string), params["repo_name"].(string) - repo, err := open_git_repo(r.Context(), group_name, repo_name) + repo, description, err := open_git_repo(r.Context(), group_name, repo_name) if err != nil { fmt.Fprintln(w, "Error opening repo:", err.Error()) return } + params["repo_description"] = description head, err := repo.Head() if err != nil { fmt.Fprintln(w, "Error getting repo HEAD:", err.Error()) diff --git a/http_handle_repo_log.go b/http_handle_repo_log.go index 7ab12946651ab6df5fc905a0ab9843e4d05b5710..0f79ecb31ea1e497658e101d4b87005729254139 100644 --- a/http_handle_repo_log.go +++ b/http_handle_repo_log.go @@ -10,11 +10,12 @@ // TODO: I probably shouldn't include *all* commits here... func handle_repo_log(w http.ResponseWriter, r *http.Request, params map[string]any) { group_name, repo_name, ref_name := params["group_name"].(string), params["repo_name"].(string), params["ref"].(string) - repo, err := open_git_repo(r.Context(), group_name, repo_name) + repo, description, err := open_git_repo(r.Context(), group_name, repo_name) if err != nil { fmt.Fprintln(w, "Error opening repo:", err.Error()) return } + params["repo_description"] = description ref, err := repo.Reference(plumbing.NewBranchReferenceName(ref_name), true) if err != nil { fmt.Fprintln(w, "Error getting repo reference:", err.Error()) diff --git a/http_handle_repo_raw.go b/http_handle_repo_raw.go index 65446102b32d0039c8a1b02562e6ef44dcacbce3..7d25071146d645aaa22c4adc4db10478ac83aa35 100644 --- a/http_handle_repo_raw.go +++ b/http_handle_repo_raw.go @@ -26,11 +26,12 @@ } params["ref_type"], params["ref"], params["path_spec"] = ref_type, ref_name, path_spec - repo, err := open_git_repo(r.Context(), group_name, repo_name) + repo, description, err := open_git_repo(r.Context(), group_name, repo_name) if err != nil { fmt.Fprintln(w, "Error opening repo:", err.Error()) return } + params["repo_description"] = description ref_hash, err := get_ref_hash_from_type_and_name(repo, ref_type, ref_name) if err != nil { diff --git a/http_handle_repo_tree.go b/http_handle_repo_tree.go index acc03e41c4b5fdeba133d6add02b103e18545f50..b1a2d626d75ccb47452cf7083514d3cc4d976c69 100644 --- a/http_handle_repo_tree.go +++ b/http_handle_repo_tree.go @@ -28,11 +28,13 @@ return } } params["ref_type"], params["ref"], params["path_spec"] = ref_type, ref_name, path_spec - repo, err := open_git_repo(r.Context(), group_name, repo_name) + repo, description, err := open_git_repo(r.Context(), group_name, repo_name) if err != nil { fmt.Fprintln(w, "Error opening repo:", err.Error()) return } + params["repo_description"] = description + ref_hash, err := get_ref_hash_from_type_and_name(repo, ref_type, ref_name) if err != nil { fmt.Fprintln(w, "Error getting ref hash:", err.Error()) diff --git a/templates/repo_index.html.tmpl b/templates/repo_index.html.tmpl index 4b20c2747967d01532db9b16a007ab3275881194..f6615d77cf31957505d36ec7399e36d5de884060 100644 --- a/templates/repo_index.html.tmpl +++ b/templates/repo_index.html.tmpl @@ -16,9 +16,19 @@ + Name + {{ .repo_name }} + + Clone git clone {{ .clone_url }} + {{ if .repo_description }} + + Description + {{ .repo_description }} + + {{ end }} -- 2.48.1