package file import ( "fmt" "os" "gopkg.in/src-d/go-git.v4/plumbing/transport" "gopkg.in/src-d/go-git.v4/plumbing/transport/internal/common" "gopkg.in/src-d/go-git.v4/plumbing/transport/server" "gopkg.in/src-d/go-git.v4/utils/ioutil" ) // ServeUploadPack serves a git-upload-pack request using standard output, input // and error. This is meant to be used when implementing a git-upload-pack // command. func ServeUploadPack(path string) error { ep, err := transport.NewEndpoint(fmt.Sprintf("file://%s", path)) if err != nil { return err } s, err := server.DefaultServer.NewUploadPackSession(ep) if err != nil { return fmt.Errorf("error creating session: %s", err) } return common.ServeUploadPack(srvCmd, s) } // ServeReceivePack serves a git-receive-pack request using standard output, // input and error. This is meant to be used when implementing a // git-receive-pack command. func ServeReceivePack(path string) error { ep, err := transport.NewEndpoint(fmt.Sprintf("file://%s", path)) if err != nil { return err } s, err := server.DefaultServer.NewReceivePackSession(ep) if err != nil { return fmt.Errorf("error creating session: %s", err) } return common.ServeReceivePack(srvCmd, s) } var srvCmd = common.ServerCommand{ Stdin: os.Stdin, Stdout: ioutil.WriteNopCloser(os.Stdout), Stderr: os.Stderr, }