Lewis: May this revision serve well! lewis@tangled.org
+22
-3
Diff
round #0
+4
knotserver/git/cmd.go
+4
knotserver/git/cmd.go
+10
knotserver/git/diff.go
+10
knotserver/git/diff.go
···
77
77
return &nd, nil
78
78
}
79
79
80
+
func (g *GitRepo) MergeBase(a, b *object.Commit) (*object.Commit, error) {
81
+
out, err := g.mergeBase(a.Hash.String(), b.Hash.String())
82
+
if err != nil {
83
+
return nil, fmt.Errorf("merge-base %s %s: %w", a.Hash, b.Hash, err)
84
+
}
85
+
86
+
hash := plumbing.NewHash(strings.TrimSpace(string(out)))
87
+
return g.r.CommitObject(hash)
88
+
}
89
+
80
90
func (g *GitRepo) DiffTree(commit1, commit2 *object.Commit) (*types.DiffTree, error) {
81
91
tree1, err := commit1.Tree()
82
92
if err != nil {
+8
-3
knotserver/xrpc/repo_compare.go
+8
-3
knotserver/xrpc/repo_compare.go
···
76
76
var combinedPatchRaw string
77
77
// we need the combined patch
78
78
if len(formatPatch) >= 2 {
79
-
diffTree, err := gr.DiffTree(commit1, commit2)
79
+
mergeBaseCommit, err := gr.MergeBase(commit1, commit2)
80
80
if err != nil {
81
81
x.Logger.Error("error comparing revisions", "msg", err.Error())
82
82
} else {
83
-
combinedPatch = diffTree.Diff
84
-
combinedPatchRaw = diffTree.Patch
83
+
diffTree, err := gr.DiffTree(mergeBaseCommit, commit2)
84
+
if err != nil {
85
+
x.Logger.Error("error comparing revisions", "msg", err.Error())
86
+
} else {
87
+
combinedPatch = diffTree.Diff
88
+
combinedPatchRaw = diffTree.Patch
89
+
}
85
90
}
86
91
}
87
92
History
1 round
0 comments
oyster.cafe
submitted
#0
1 commit
expand
collapse
knotserver/xrpc: merge-base for combined patch in repo compare
Lewis: May this revision serve well! <lewis@tangled.org>
3/3 success
expand
collapse
expand 0 comments
pull request successfully merged