create wrapper function for executing git commands
1 file changed, 16 insertions(+), 16 deletions(-)
changed files
M git/service/service.go → git/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 +}