ref: c37728bbad8f57288b68559da52ad57abb0141ff
parent: a6438b7832a18a5b4d5357e81816d9406ac92cf6
author: Runxi Yu <me@runxiyu.org>
date: Fri Feb 20 07:49:24 EST 2026
Revert "packed: Make packWriter implement Write directly instead of wrapping" This reverts commit 50cd7868cf055bce46e1a4253840089dfc602a11.
--- a/packed_write_pack.go
+++ b/packed_write_pack.go
@@ -39,16 +39,6 @@
}, nil
}
-func (pw *packWriter) Write(p []byte) (int, error) {- if pw == nil || !pw.wroteHeader {- return 0, ErrInvalidObject
- }
- if err := pw.writePacked(p); err != nil {- return 0, err
- }
- return len(p), nil
-}
-
func (pw *packWriter) writePacked(p []byte) error { if len(p) == 0 {return nil
@@ -104,7 +94,7 @@
return err
}
- zw := zlib.NewWriter(pw)
+ zw := zlib.NewWriter(&packHashWriter{pw: pw}) if _, err := zw.Write(body); err != nil {_ = zw.Close()
return err
@@ -147,7 +137,7 @@
return err
}
- zw := zlib.NewWriter(pw)
+ zw := zlib.NewWriter(&packHashWriter{pw: pw}) if _, err := zw.Write(delta); err != nil {_ = zw.Close()
return err
@@ -185,7 +175,7 @@
return err
}
- zw := zlib.NewWriter(pw)
+ zw := zlib.NewWriter(&packHashWriter{pw: pw}) if _, err := zw.Write(delta); err != nil {_ = zw.Close()
return err
@@ -205,6 +195,20 @@
copy(out.data[:], sum)
out.algo = pw.algo
return out, nil
+}
+
+type packHashWriter struct {+ pw *packWriter
+}
+
+func (w *packHashWriter) Write(p []byte) (int, error) {+ if w == nil || w.pw == nil {+ return 0, ErrInvalidObject
+ }
+ if err := w.pw.writePacked(p); err != nil {+ return 0, err
+ }
+ return len(p), nil
}
// packHeaderEncode encodes a pack object header (type + size).
--
⑨