all repos

mugit @ 2d69e9b22cb890dec23489acba590b2da72c4e28

🐮 git server that your cow will love

mugit/internal/git/external.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
git: move gitx into git, 3 months ago
1
package git
2
3
import (
4
	"context"
5
	"fmt"
6
	"io"
7
	"os/exec"
8
	"syscall"
9
)
10
11
var gitEnv = []string{
12
	"GIT_CONFIG_GLOBAL=/dev/null",
13
	"GIT_CONFIG_SYSTEM=/dev/null",
14
}
15
16
type cmdOpts struct {
17
	Cmd         []string
18
	GitProtocol string
19
	RepoDir     string
20
	Stdin       io.Reader
21
	Stdout      io.Writer
22
	Stderr      io.Writer
23
}
24
25
func gitCmd(ctx context.Context, opts cmdOpts) error {
26
	opts.Cmd = append(opts.Cmd, ".")
27
	cmd := exec.CommandContext(ctx, "git", opts.Cmd...)
28
	cmd.Dir = opts.RepoDir
29
	cmd.Env = append(gitEnv, fmt.Sprintf("GIT_PROTOCOL=%s", opts.GitProtocol))
30
	cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
31
	cmd.Stdin = opts.Stdin
32
	cmd.Stdout = opts.Stdout
33
	cmd.Stderr = opts.Stderr
34
	return cmd.Run()
35
}