Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
854 B · 41 lines
Go
at next-dev
123456789101112131415161718192021222324252627282930313233343536373839404142package gitea
import ( "context" "errors" "fmt" "strings"
"github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/object" "tangled.org/core/gitutil")
func GetCommitByPathWithID(ctx context.Context, oid plumbing.Hash, repoPath, relpath string) (*object.Commit, error) { if len(relpath) == 0 { return nil, errors.New("relpath should not be empty") } // File name starts with ':' must be escaped. if relpath[0] == ':' { relpath = `\` + relpath }
out, err := gitutil.Command(ctx, "-C", repoPath, "log", "-1", "--pretty=format:%H", oid.String(), "--", relpath, ).Output() if err != nil { return nil, err }
rev := plumbing.NewHash(strings.TrimSpace(string(out))) if rev.IsZero() { return nil, fmt.Errorf("invalid commit id: %q", string(out)) }
return GetCommit(ctx, repoPath, rev.String())}