···
-
func (g *GitRepo) DiffTree(rev1, rev2 string) (*types.DiffTree, error) {
-
commit1, err := g.resolveRevision(rev1)
-
return nil, fmt.Errorf("Invalid revision: %s", rev1)
-
commit2, err := g.resolveRevision(rev2)
-
return nil, fmt.Errorf("Invalid revision: %s", rev2)
tree1, err := commit1.Tree()
···
-
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)
···
+
func (g *GitRepo) DiffTree(commit1, commit2 *object.Commit) (*types.DiffTree, error) {
tree1, err := commit1.Tree()
···
+
func (g *GitRepo) MergeBase(commit1, commit2 *object.Commit) (*object.Commit, error) {
+
isAncestor, err := commit1.IsAncestor(commit2)
+
mergeBase, err := commit1.MergeBase(commit2)
+
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))
return nil, fmt.Errorf("resolving revision %s: %w", revStr, err)