aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/transport/ssh
diff options
context:
space:
mode:
authorSantiago M. Mola <santi@mola.io>2016-11-28 09:57:38 +0100
committerGitHub <noreply@github.com>2016-11-28 09:57:38 +0100
commit68893edf9ddc3de181431f1552e3b773cb66f080 (patch)
treef45e5fa18e10168a278b7d0ed7dea984ff9969f7 /plumbing/transport/ssh
parentf9adb3565b36ba1573102f954d0ee916009efac2 (diff)
downloadgo-git-68893edf9ddc3de181431f1552e3b773cb66f080.tar.gz
remove old types from transport and use packp (#142)
* protocol: move UploadPackRequest to protocol. * UploadPackRequest is now defined as an embedding of UploadRequest and UploadHaves. * Move http encoding specific code from UploadPackRequest to transport/http. * rename UlReq to UploadRequest * packp: move AdvRefs Encoder/Decoder to Encode/Decode methods. * packp: move UploadRequest Encoder/Decoder to Encode/Decode methods. * packp: Remove transport.UploadPackInfo in favor of packp. AdvRefs.
Diffstat (limited to 'plumbing/transport/ssh')
-rw-r--r--plumbing/transport/ssh/fetch_pack.go44
-rw-r--r--plumbing/transport/ssh/send_pack.go4
2 files changed, 11 insertions, 37 deletions
diff --git a/plumbing/transport/ssh/fetch_pack.go b/plumbing/transport/ssh/fetch_pack.go
index decd9c4..a0f52f1 100644
--- a/plumbing/transport/ssh/fetch_pack.go
+++ b/plumbing/transport/ssh/fetch_pack.go
@@ -35,7 +35,7 @@ func newFetchPackSession(ep transport.Endpoint) (*fetchPackSession, error) {
return s, nil
}
-func (s *fetchPackSession) AdvertisedReferences() (*transport.UploadPackInfo, error) {
+func (s *fetchPackSession) AdvertisedReferences() (*packp.AdvRefs, error) {
if s.advRefsRun {
return nil, transport.ErrAdvertistedReferencesAlreadyCalled
}
@@ -46,9 +46,9 @@ func (s *fetchPackSession) AdvertisedReferences() (*transport.UploadPackInfo, er
return nil, err
}
- i := transport.NewUploadPackInfo()
- if err := i.Decode(s.stdout); err != nil {
- if err != packp.ErrEmpty {
+ ar := packp.NewAdvRefs()
+ if err := ar.Decode(s.stdout); err != nil {
+ if err != packp.ErrEmptyAdvRefs {
return nil, err
}
@@ -65,12 +65,12 @@ func (s *fetchPackSession) AdvertisedReferences() (*transport.UploadPackInfo, er
return nil, err
}
- return i, nil
+ return ar, nil
}
// FetchPack returns a packfile for a given upload request.
// Closing the returned reader will close the SSH session.
-func (s *fetchPackSession) FetchPack(req *transport.UploadPackRequest) (
+func (s *fetchPackSession) FetchPack(req *packp.UploadPackRequest) (
io.ReadCloser, error) {
if req.IsEmpty() {
@@ -161,13 +161,13 @@ var (
// TODO support acks for common objects
// TODO build a proper state machine for all these processing options
func fetchPack(w io.WriteCloser, r io.Reader,
- req *transport.UploadPackRequest) error {
+ req *packp.UploadPackRequest) error {
- if err := sendUlReq(w, req); err != nil {
+ if err := req.UploadRequest.Encode(w); err != nil {
return fmt.Errorf("sending upload-req message: %s", err)
}
- if err := sendHaves(w, req); err != nil {
+ if err := req.UploadHaves.Encode(w); err != nil {
return fmt.Errorf("sending haves message: %s", err)
}
@@ -186,32 +186,6 @@ func fetchPack(w io.WriteCloser, r io.Reader,
return nil
}
-func sendUlReq(w io.Writer, req *transport.UploadPackRequest) error {
- ur := packp.NewUlReq()
- ur.Wants = req.Wants
- ur.Depth = packp.DepthCommits(req.Depth)
- e := packp.NewUlReqEncoder(w)
-
- return e.Encode(ur)
-}
-
-func sendHaves(w io.Writer, req *transport.UploadPackRequest) error {
- e := pktline.NewEncoder(w)
- for _, have := range req.Haves {
- if err := e.Encodef("have %s\n", have); err != nil {
- return fmt.Errorf("sending haves for %q: %s", have, err)
- }
- }
-
- if len(req.Haves) != 0 {
- if err := e.Flush(); err != nil {
- return fmt.Errorf("sending flush-pkt after haves: %s", err)
- }
- }
-
- return nil
-}
-
func sendDone(w io.Writer) error {
e := pktline.NewEncoder(w)
diff --git a/plumbing/transport/ssh/send_pack.go b/plumbing/transport/ssh/send_pack.go
index afe7510..adf67bb 100644
--- a/plumbing/transport/ssh/send_pack.go
+++ b/plumbing/transport/ssh/send_pack.go
@@ -4,6 +4,7 @@ import (
"errors"
"io"
+ "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp"
"gopkg.in/src-d/go-git.v4/plumbing/transport"
)
@@ -19,8 +20,7 @@ func newSendPackSession(ep transport.Endpoint) (transport.SendPackSession,
return &sendPackSession{&session{}}, nil
}
-func (s *sendPackSession) AdvertisedReferences() (*transport.UploadPackInfo,
- error) {
+func (s *sendPackSession) AdvertisedReferences() (*packp.AdvRefs, error) {
return nil, errSendPackNotSupported
}