forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
at master 940 B view raw
1package git 2 3import ( 4 "fmt" 5 "os/exec" 6) 7 8const ( 9 fieldSeparator = "\x1f" // ASCII Unit Separator 10 recordSeparator = "\x1e" // ASCII Record Separator 11) 12 13func (g *GitRepo) runGitCmd(command string, extraArgs ...string) ([]byte, error) { 14 var args []string 15 args = append(args, command) 16 args = append(args, extraArgs...) 17 18 cmd := exec.Command("git", args...) 19 cmd.Dir = g.path 20 21 out, err := cmd.Output() 22 if err != nil { 23 if exitErr, ok := err.(*exec.ExitError); ok { 24 return nil, fmt.Errorf("%w, stderr: %s", err, string(exitErr.Stderr)) 25 } 26 return nil, err 27 } 28 29 return out, nil 30} 31 32func (g *GitRepo) revList(extraArgs ...string) ([]byte, error) { 33 return g.runGitCmd("rev-list", extraArgs...) 34} 35 36func (g *GitRepo) forEachRef(extraArgs ...string) ([]byte, error) { 37 return g.runGitCmd("for-each-ref", extraArgs...) 38} 39 40func (g *GitRepo) revParse(extraArgs ...string) ([]byte, error) { 41 return g.runGitCmd("rev-parse", extraArgs...) 42}