Skip to content

Commit 2279b8a

Browse files
aymanbagabaspjbgf
andcommitted
plumbing: transport, dry sideband caps and wrap errors
Co-authored-by: Paulo Gomes <[email protected]> Update remote.go Co-authored-by: Paulo Gomes <[email protected]>
1 parent 95f4718 commit 2279b8a

File tree

7 files changed

+18
-21
lines changed

7 files changed

+18
-21
lines changed

plumbing/transport/fetch.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@ func FetchPack(
2525
var demuxer *sideband.Demuxer
2626
var reader io.Reader = packf
2727
caps := conn.Capabilities()
28-
if caps.Supports(capability.Sideband) {
29-
demuxer = sideband.NewDemuxer(sideband.Sideband, reader)
30-
}
3128
if caps.Supports(capability.Sideband64k) {
3229
demuxer = sideband.NewDemuxer(sideband.Sideband64k, reader)
30+
} else if caps.Supports(capability.Sideband) {
31+
demuxer = sideband.NewDemuxer(sideband.Sideband, reader)
3332
}
3433

3534
if demuxer != nil && req.Progress != nil {

plumbing/transport/loader.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (l *fsLoader) load(ep *Endpoint, tried bool) (storage.Storer, error) {
4949

5050
if _, err := fs.Stat("config"); err != nil {
5151
if !l.strict && !tried {
52-
if _, err := fs.Stat(".git"); err == nil {
52+
if fi, err := fs.Stat(".git"); err == nil && fi.IsDir() {
5353
ep.Path = filepath.Join(ep.Path, ".git")
5454
} else {
5555
ep.Path = ep.Path + ".git"

plumbing/transport/negotiate.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -105,32 +105,32 @@ func NegotiatePack(
105105
var shupd packp.ShallowUpdate
106106
for !done {
107107
if err := upreq.Encode(writer); err != nil {
108-
return nil, fmt.Errorf("sending upload-request: %s", err)
108+
return nil, fmt.Errorf("sending upload-request: %w", err)
109109
}
110110

111111
// Encode upload-haves
112112
// TODO: support multi_ack and multi_ack_detailed caps
113113
if err := uphav.Encode(writer); err != nil {
114-
return nil, fmt.Errorf("sending upload-haves: %s", err)
114+
return nil, fmt.Errorf("sending upload-haves: %w", err)
115115
}
116116

117117
// Note: Stateless RPC servers don't expect a flush-pkt after the
118118
// haves. Sending one might result in a response without a packfile in
119119
// return.
120120
if !conn.StatelessRPC() && len(uphav.Haves) > 0 {
121121
if err := pktline.WriteFlush(writer); err != nil {
122-
return nil, fmt.Errorf("sending flush-pkt after haves: %s", err)
122+
return nil, fmt.Errorf("sending flush-pkt after haves: %w", err)
123123
}
124124
}
125125

126126
// Let the server know we're done
127127
if _, err := pktline.Writeln(writer, "done"); err != nil {
128-
return nil, fmt.Errorf("sending done: %s", err)
128+
return nil, fmt.Errorf("sending done: %w", err)
129129
}
130130

131131
// Close the writer to signal the end of the request
132132
if err := writer.Close(); err != nil {
133-
return nil, fmt.Errorf("closing writer: %s", err)
133+
return nil, fmt.Errorf("closing writer: %w", err)
134134
}
135135

136136
// TODO: handle server-response to support incremental fetch i.e.
@@ -143,7 +143,7 @@ func NegotiatePack(
143143
// server.
144144
if req.Depth != 0 {
145145
if err := shupd.Decode(reader); err != nil {
146-
return nil, fmt.Errorf("decoding shallow-update: %s", err)
146+
return nil, fmt.Errorf("decoding shallow-update: %w", err)
147147
}
148148
}
149149

@@ -152,12 +152,12 @@ func NegotiatePack(
152152
var acks bytes.Buffer
153153
tee := io.TeeReader(reader, &acks)
154154
if l, p, err := pktline.ReadLine(tee); err != nil {
155-
return nil, fmt.Errorf("reading server-response, len: %d, pkt: %q: %s", l, p, err)
155+
return nil, fmt.Errorf("reading server-response, len: %d, pkt: %q: %w", l, p, err)
156156
}
157157

158158
// Decode server-response final ACK/NAK
159159
if err := srvrs.Decode(&acks); err != nil {
160-
return nil, fmt.Errorf("decoding server-response: %s", err)
160+
return nil, fmt.Errorf("decoding server-response: %w", err)
161161
}
162162

163163
}

plumbing/transport/receive_pack.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func ReceivePack(
8686
// Done with the request, now close the reader
8787
// to indicate that we are done reading from it.
8888
if err := r.Close(); err != nil {
89-
return fmt.Errorf("closing reader: %s", err)
89+
return fmt.Errorf("closing reader: %w", err)
9090
}
9191

9292
// Report status if the client supports it
@@ -133,7 +133,7 @@ func sendReportStatus(w io.WriteCloser, unpackErr error, cmdStatus map[plumbing.
133133
}
134134

135135
if err := w.Close(); err != nil {
136-
return fmt.Errorf("closing writer: %s", err)
136+
return fmt.Errorf("closing writer: %w", err)
137137
}
138138

139139
return nil

plumbing/transport/serve.go

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ func AdvertiseReferences(ctx context.Context, st storage.Storer, w io.Writer, se
3535
} else {
3636
// TODO: support multi_ack and multi_ack_detailed caps
3737
// TODO: support include-tag
38-
// TODO: support shallow
3938
// TODO: support deepen
4039
// TODO: support deepen-since
4140
ar.Capabilities.Set(capability.Sideband) //nolint:errcheck

plumbing/transport/upload_pack.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func UploadPack(
109109
// Done with the request, now close the reader
110110
// to indicate that we are done reading from it.
111111
if err := r.Close(); err != nil {
112-
return fmt.Errorf("closing reader: %s", err)
112+
return fmt.Errorf("closing reader: %w", err)
113113
}
114114

115115
// TODO: support deepen, deepen-since, and deepen-not
@@ -142,11 +142,10 @@ func UploadPack(
142142

143143
var writer io.Writer = w
144144
if !caps.Supports(capability.NoProgress) {
145-
if caps.Supports(capability.Sideband) {
146-
writer = sideband.NewMuxer(sideband.Sideband, w)
147-
}
148145
if caps.Supports(capability.Sideband64k) {
149146
writer = sideband.NewMuxer(sideband.Sideband64k, w)
147+
} else if caps.Supports(capability.Sideband) {
148+
writer = sideband.NewMuxer(sideband.Sideband, w)
150149
}
151150
}
152151

@@ -159,7 +158,7 @@ func UploadPack(
159158
}
160159

161160
if err := w.Close(); err != nil {
162-
return fmt.Errorf("closing writer: %s", err)
161+
return fmt.Errorf("closing writer: %w", err)
163162
}
164163
}
165164

remote.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ func (r *Remote) fetch(ctx context.Context, o *FetchOptions) (sto storer.Referen
450450
}
451451

452452
if err := conn.Close(); err != nil {
453-
return nil, fmt.Errorf("error closing connection: %v", err)
453+
return nil, fmt.Errorf("error closing connection: %w", err)
454454
}
455455

456456
var updatedPrune bool

0 commit comments

Comments
 (0)