Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit c58695e

Browse files
committed
send PACK only if non-delete command present
According to: https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt > The packfile MUST NOT be sent if the only command used is 'delete'. Signed-off-by: Stanislav Seletskiy <s.seletskiy@gmail.com>
1 parent 5d9007f commit c58695e

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

remote.go

+16-10
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ func (r *Remote) PushContext(ctx context.Context, o *PushOptions) (err error) {
168168
}
169169
}
170170

171-
rs, err := pushHashes(ctx, s, r.s, req, hashesToPush, r.useRefDeltas(ar))
171+
rs, err := pushHashes(ctx, s, r.s, req, hashesToPush, r.useRefDeltas(ar), allDelete)
172172
if err != nil {
173173
return err
174174
}
@@ -1033,10 +1033,11 @@ func pushHashes(
10331033
req *packp.ReferenceUpdateRequest,
10341034
hs []plumbing.Hash,
10351035
useRefDeltas bool,
1036+
allDelete bool,
10361037
) (*packp.ReportStatus, error) {
10371038

10381039
rd, wr := io.Pipe()
1039-
req.Packfile = rd
1040+
10401041
config, err := s.Config()
10411042
if err != nil {
10421043
return nil, err
@@ -1047,15 +1048,20 @@ func pushHashes(
10471048
// to the channel.
10481049
done := make(chan error, 1)
10491050

1050-
go func() {
1051-
e := packfile.NewEncoder(wr, s, useRefDeltas)
1052-
if _, err := e.Encode(hs, config.Pack.Window); err != nil {
1053-
done <- wr.CloseWithError(err)
1054-
return
1055-
}
1051+
if !allDelete {
1052+
req.Packfile = rd
1053+
go func() {
1054+
e := packfile.NewEncoder(wr, s, useRefDeltas)
1055+
if _, err := e.Encode(hs, config.Pack.Window); err != nil {
1056+
done <- wr.CloseWithError(err)
1057+
return
1058+
}
10561059

1057-
done <- wr.Close()
1058-
}()
1060+
done <- wr.Close()
1061+
}()
1062+
} else {
1063+
close(done)
1064+
}
10591065

10601066
rs, err := sess.ReceivePack(ctx, req)
10611067
if err != nil {

0 commit comments

Comments
 (0)