forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
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}