From faa5ca8fab23176d390e9522f1485d467851545b Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 6 Apr 2025 01:55:21 +0800 Subject: Move stuff into internal/unsorted --- http_handle_repo_contrib_one.go | 98 ----------------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 http_handle_repo_contrib_one.go (limited to 'http_handle_repo_contrib_one.go') diff --git a/http_handle_repo_contrib_one.go b/http_handle_repo_contrib_one.go deleted file mode 100644 index 280dca8..0000000 --- a/http_handle_repo_contrib_one.go +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu - -package forge - -import ( - "net/http" - "strconv" - - "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/forge/internal/web" -) - -// httpHandleRepoContribOne provides an interface to each merge request of a -// repo. -func (s *Server) httpHandleRepoContribOne(writer http.ResponseWriter, request *http.Request, params map[string]any) { - var mrIDStr string - var mrIDInt int - var err error - var title, status, srcRefStr, dstBranchStr string - var repo *git.Repository - var srcRefHash plumbing.Hash - var dstBranchHash plumbing.Hash - var srcCommit, dstCommit, mergeBaseCommit *object.Commit - var mergeBases []*object.Commit - - mrIDStr = params["mr_id"].(string) - mrIDInt64, err := strconv.ParseInt(mrIDStr, 10, strconv.IntSize) - if err != nil { - web.ErrorPage400(s.templates, writer, params, "Merge request ID not an integer") - return - } - mrIDInt = int(mrIDInt64) - - if err = s.database.QueryRow(request.Context(), - "SELECT COALESCE(title, ''), status, source_ref, COALESCE(destination_branch, '') FROM merge_requests WHERE repo_id = $1 AND repo_local_id = $2", - params["repo_id"], mrIDInt, - ).Scan(&title, &status, &srcRefStr, &dstBranchStr); err != nil { - web.ErrorPage500(s.templates, writer, params, "Error querying merge request: "+err.Error()) - return - } - - repo = params["repo"].(*git.Repository) - - if srcRefHash, err = getRefHash(repo, "branch", srcRefStr); err != nil { - web.ErrorPage500(s.templates, writer, params, "Error getting source ref hash: "+err.Error()) - return - } - if srcCommit, err = repo.CommitObject(srcRefHash); err != nil { - web.ErrorPage500(s.templates, writer, params, "Error getting source commit: "+err.Error()) - return - } - params["source_commit"] = srcCommit - - if dstBranchStr == "" { - dstBranchStr = "HEAD" - dstBranchHash, err = getRefHash(repo, "", "") - } else { - dstBranchHash, err = getRefHash(repo, "branch", dstBranchStr) - } - if err != nil { - web.ErrorPage500(s.templates, writer, params, "Error getting destination branch hash: "+err.Error()) - return - } - - if dstCommit, err = repo.CommitObject(dstBranchHash); err != nil { - web.ErrorPage500(s.templates, writer, params, "Error getting destination commit: "+err.Error()) - return - } - params["destination_commit"] = dstCommit - - if mergeBases, err = srcCommit.MergeBase(dstCommit); err != nil { - web.ErrorPage500(s.templates, writer, params, "Error getting merge base: "+err.Error()) - return - } - - if len(mergeBases) < 1 { - web.ErrorPage500(s.templates, writer, params, "No merge base found for this merge request; these two branches do not share any common history") - // TODO - return - } - - mergeBaseCommit = mergeBases[0] - params["merge_base"] = mergeBaseCommit - - patch, err := mergeBaseCommit.Patch(srcCommit) - if err != nil { - web.ErrorPage500(s.templates, writer, params, "Error getting patch: "+err.Error()) - return - } - params["file_patches"] = makeUsableFilePatches(patch) - - params["mr_title"], params["mr_status"], params["mr_source_ref"], params["mr_destination_branch"] = title, status, srcRefStr, dstBranchStr - - s.renderTemplate(writer, "repo_contrib_one", params) -} -- cgit v1.2.3