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
}
|