repository/git/git.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package git import ( "bytes" "context" "errors" "os/exec" ) func IsGitRepo(ctx context.Context, wd string) (bool, string, error) { root, err := showRoot(ctx, wd) if err != nil { var exitErr *exec.ExitError if errors.As(err, &exitErr) { if exitErr.ExitCode() == 128 { return false, wd, nil } } return false, wd, err } return root != "", root, nil } func showRoot(ctx context.Context, wd string) (string, error) { cmd := exec.CommandContext(ctx, "git", "rev-parse", "--show-toplevel") cmd.Dir = wd rr, err := cmd.Output() if err != nil { return "", err } return string(bytes.TrimSpace(rr)), nil } |