@@ -19,6 +19,10 @@ import (
1919
2020// zeta-serve metadata "group/mono-zeta" --batch --depth=1
2121
22+ const (
23+ UseZSTD rune = 1000
24+ )
25+
2226type Metadata struct {
2327 Path string
2428 Revision string
@@ -28,6 +32,7 @@ type Metadata struct {
2832 Depth int
2933 Batch bool
3034 Sparse bool
35+ UseZSTD bool
3136}
3237
3338func (c * Metadata ) ParseArgs (args []string ) error {
@@ -40,7 +45,8 @@ func (c *Metadata) ParseArgs(args []string) error {
4045 Add ("deepen-from" , REQUIRED , 'F' ).
4146 Add ("deepen" , REQUIRED , 'D' ).
4247 Add ("sparse" , NOARG , 'S' ).
43- Add ("batch" , NOARG , 'B' )
48+ Add ("batch" , NOARG , 'B' ).
49+ Add ("zstd" , NOARG , UseZSTD )
4450 if err := p .Parse (args , func (index rune , nextArg , raw string ) error {
4551 switch index {
4652 case 'R' :
@@ -72,6 +78,8 @@ func (c *Metadata) ParseArgs(args []string) error {
7278 c .Sparse = true
7379 case 'B' :
7480 c .Batch = true
81+ case UseZSTD :
82+ c .UseZSTD = true
7583 }
7684 return nil
7785 }); err != nil {
@@ -89,7 +97,7 @@ func (c *Metadata) Exec(ctx *RunCtx) int {
8997 return exitCode
9098 }
9199 if c .Batch {
92- return ctx .S .BatchMetadata (ctx .Session , c .Depth )
100+ return ctx .S .BatchMetadata (ctx .Session , c .Depth , c . UseZSTD )
93101 }
94102 if c .Sparse {
95103 return ctx .S .GetSparseMetadata (ctx .Session , c )
@@ -110,7 +118,7 @@ func (s *Server) FetchMetadata(e *Session, c *Metadata) int {
110118 if ro .Target == nil {
111119 return e .ExitFormat (400 , "revision %s target not commit" , c .Revision )
112120 }
113- p , err := protocol .NewPipePacker (rr .ODB (), e , c .Depth )
121+ p , err := protocol .NewPipePacker (rr .ODB (), e , c .Depth , c . UseZSTD )
114122 if err != nil {
115123 logrus .Errorf ("new packer error %v" , err )
116124 return e .ExitError (err )
@@ -153,7 +161,7 @@ func (s *Server) GetSparseMetadata(e *Session, c *Metadata) int {
153161 return e .ExitFormat (400 , "revision %s target not commit" , c .Revision )
154162 }
155163 cc := ro .Target
156- p , err := protocol .NewPipePacker (rr .ODB (), e , c .Depth )
164+ p , err := protocol .NewPipePacker (rr .ODB (), e , c .Depth , c . UseZSTD )
157165 if err != nil {
158166 logrus .Errorf ("new packer error %v" , err )
159167 return e .ExitError (err )
@@ -176,7 +184,7 @@ func (s *Server) GetSparseMetadata(e *Session, c *Metadata) int {
176184 return 0
177185}
178186
179- func (s * Server ) BatchMetadata (e * Session , depth int ) int {
187+ func (s * Server ) BatchMetadata (e * Session , depth int , useZSTD bool ) int {
180188 oids , err := protocol .ReadInputOIDs (e )
181189 if err != nil {
182190 e .WriteError ("batch-oids: %v" , err )
@@ -196,7 +204,7 @@ func (s *Server) BatchMetadata(e *Session, depth int) int {
196204 }
197205 objects = append (objects , a )
198206 }
199- p , err := protocol .NewPipePacker (rr .ODB (), e , depth )
207+ p , err := protocol .NewPipePacker (rr .ODB (), e , depth , useZSTD )
200208 if err != nil {
201209 logrus .Errorf ("new packer error %v" , err )
202210 return e .ExitError (err )
0 commit comments