···
89
-
func (g *GitRepo) DiffTree(rev1, rev2 string) (*types.DiffTree, error) {
90
-
commit1, err := g.resolveRevision(rev1)
92
-
return nil, fmt.Errorf("Invalid revision: %s", rev1)
95
-
commit2, err := g.resolveRevision(rev2)
97
-
return nil, fmt.Errorf("Invalid revision: %s", rev2)
89
+
func (g *GitRepo) DiffTree(commit1, commit2 *object.Commit) (*types.DiffTree, error) {
tree1, err := commit1.Tree()
···
133
-
func (g *GitRepo) resolveRevision(revStr string) (*object.Commit, error) {
123
+
func (g *GitRepo) MergeBase(commit1, commit2 *object.Commit) (*object.Commit, error) {
124
+
isAncestor, err := commit1.IsAncestor(commit2)
130
+
return commit1, nil
133
+
mergeBase, err := commit1.MergeBase(commit2)
138
+
if len(mergeBase) == 0 {
139
+
return nil, fmt.Errorf("failed to find a merge-base")
142
+
return mergeBase[0], nil
145
+
func (g *GitRepo) ResolveRevision(revStr string) (*object.Commit, error) {
rev, err := g.r.ResolveRevision(plumbing.Revision(revStr))
return nil, fmt.Errorf("resolving revision %s: %w", revStr, err)