@@ -168,7 +168,7 @@ func (r *Remote) PushContext(ctx context.Context, o *PushOptions) (err error) {
168
168
}
169
169
}
170
170
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 )
172
172
if err != nil {
173
173
return err
174
174
}
@@ -1033,10 +1033,11 @@ func pushHashes(
1033
1033
req * packp.ReferenceUpdateRequest ,
1034
1034
hs []plumbing.Hash ,
1035
1035
useRefDeltas bool ,
1036
+ allDelete bool ,
1036
1037
) (* packp.ReportStatus , error ) {
1037
1038
1038
1039
rd , wr := io .Pipe ()
1039
- req . Packfile = rd
1040
+
1040
1041
config , err := s .Config ()
1041
1042
if err != nil {
1042
1043
return nil , err
@@ -1047,15 +1048,20 @@ func pushHashes(
1047
1048
// to the channel.
1048
1049
done := make (chan error , 1 )
1049
1050
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
+ }
1056
1059
1057
- done <- wr .Close ()
1058
- }()
1060
+ done <- wr .Close ()
1061
+ }()
1062
+ } else {
1063
+ close (done )
1064
+ }
1059
1065
1060
1066
rs , err := sess .ReceivePack (ctx , req )
1061
1067
if err != nil {
0 commit comments