From 4cb4af22f52675b82a0c5d513e8f1227b5f7946a Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Sun, 8 Jun 2025 11:42:50 +0100 Subject: [PATCH] knotserver: git: remove MergeBase calculation Change-Id: mwvlmmytozoplsuukxzoypvpunptrrpk the rev-list approach to building format-patch internally performs merge-base calculations. Signed-off-by: oppiliappan --- knotserver/git/diff.go | 25 +------------------------ knotserver/routes.go | 10 +--------- types/repo.go | 2 +- 3 files changed, 3 insertions(+), 34 deletions(-) diff --git a/knotserver/git/diff.go b/knotserver/git/diff.go index 5c1f402..fa2c2b0 100644 --- a/knotserver/git/diff.go +++ b/knotserver/git/diff.go @@ -166,28 +166,6 @@ func (g *GitRepo) formatSinglePatch(base, commit2 plumbing.Hash, extraArgs ...st return stdout.String(), &formatPatch[0], nil } -func (g *GitRepo) MergeBase(commit1, commit2 *object.Commit) (*object.Commit, error) { - isAncestor, err := commit1.IsAncestor(commit2) - if err != nil { - return nil, err - } - - if isAncestor { - return commit1, nil - } - - mergeBase, err := commit1.MergeBase(commit2) - if err != nil { - return nil, err - } - - if len(mergeBase) == 0 { - return nil, fmt.Errorf("failed to find a merge-base") - } - - return mergeBase[0], nil -} - func (g *GitRepo) ResolveRevision(revStr string) (*object.Commit, error) { rev, err := g.r.ResolveRevision(plumbing.Revision(revStr)) if err != nil { @@ -224,7 +202,6 @@ func (g *GitRepo) commitsBetween(newCommit, oldCommit *object.Commit) ([]*object if err != nil { continue } - commits = append(commits, obj) } @@ -232,7 +209,7 @@ func (g *GitRepo) commitsBetween(newCommit, oldCommit *object.Commit) ([]*object } func (g *GitRepo) FormatPatch(base, commit2 *object.Commit) (string, []types.FormatPatch, error) { - // get list of commits between commir2 and base + // get list of commits between commit2 and base commits, err := g.commitsBetween(commit2, base) if err != nil { return "", nil, fmt.Errorf("failed to get commits: %w", err) diff --git a/knotserver/routes.go b/knotserver/routes.go index 7424c99..89b5fb0 100644 --- a/knotserver/routes.go +++ b/knotserver/routes.go @@ -1096,14 +1096,7 @@ func (h *Handle) Compare(w http.ResponseWriter, r *http.Request) { return } - mergeBase, err := gr.MergeBase(commit1, commit2) - if err != nil { - l.Error("failed to find merge-base", "msg", err.Error()) - writeError(w, "failed to calculate diff", http.StatusBadRequest) - return - } - - rawPatch, formatPatch, err := gr.FormatPatch(mergeBase, commit2) + rawPatch, formatPatch, err := gr.FormatPatch(commit1, commit2) if err != nil { l.Error("error comparing revisions", "msg", err.Error()) writeError(w, "error comparing revisions", http.StatusBadRequest) @@ -1114,7 +1107,6 @@ func (h *Handle) Compare(w http.ResponseWriter, r *http.Request) { Rev1: commit1.Hash.String(), Rev2: commit2.Hash.String(), FormatPatch: formatPatch, - MergeBase: mergeBase.Hash.String(), Patch: rawPatch, }) return diff --git a/types/repo.go b/types/repo.go index 985da9e..04d7cad 100644 --- a/types/repo.go +++ b/types/repo.go @@ -36,7 +36,7 @@ type RepoFormatPatchResponse struct { Rev1 string `json:"rev1,omitempty"` Rev2 string `json:"rev2,omitempty"` FormatPatch []FormatPatch `json:"format_patch,omitempty"` - MergeBase string `json:"merge_base,omitempty"` + MergeBase string `json:"merge_base,omitempty"` // deprecated Patch string `json:"patch,omitempty"` } -- 2.43.0