all repos — elgit @ 2394599e350087e748161c7a7977f9a1bd8f7683

fork of legit: web frontend for git, written in go

create wrapper function for executing git commands

Alin
commit

2394599e350087e748161c7a7977f9a1bd8f7683

parent

f3f061433807f4a1239f6adf61eb1209f33c7185

1 file changed, 16 insertions(+), 16 deletions(-)

changed files
M git/service/service.gogit/service/service.go
@@ -25,17 +25,12 @@
func (c *Command) InfoRefs(ctx context.Context) error { ctx, cancel := context.WithTimeout(ctx, timeout) defer cancel() - cmd := exec.CommandContext(ctx, "git", []string{ + cmd, stdoutPipe := gitCommand(ctx, "git", "upload-pack", "--stateless-rpc", "--advertise-refs", - ".", - }...) - - cmd.Dir = c.Dir - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - stdoutPipe, _ := cmd.StdoutPipe() - cmd.Stderr = cmd.Stdout + c.Dir, + ) if err := cmd.Start(); err != nil { log.Printf("git: failed to start git-upload-pack (info/refs): %s", err)
@@ -80,17 +75,12 @@
func (c *Command) UploadPack(ctx context.Context) (err error) { ctx, cancel := context.WithTimeout(ctx, timeout) defer cancel() - cmd := exec.CommandContext(ctx, "git", []string{ + cmd, stdoutPipe := gitCommand(ctx, "git", "-c", "uploadpack.allowFilter=true", "upload-pack", "--stateless-rpc", - ".", - }...) - cmd.Dir = c.Dir - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - - stdoutPipe, _ := cmd.StdoutPipe() - cmd.Stderr = cmd.Stdout + c.Dir, + ) stdinPipe, err := cmd.StdinPipe() if err != nil {
@@ -135,3 +125,13 @@ _, err := fmt.Fprint(w, "0000")
return err } + +func gitCommand(ctx context.Context, name string, args ...string) (*exec.Cmd, io.ReadCloser) { + cmd := exec.CommandContext(ctx, name, args...) + cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} + + r, _ := cmd.StdoutPipe() + cmd.Stderr = cmd.Stdout + + return cmd, r +}