@@ -23,6 +23,7 @@ type Reset struct {
23
23
Keep bool `name:"keep" help:"Reset HEAD but keep local changes"`
24
24
Fetch bool `name:"fetch" help:"Fetch missing objects"`
25
25
One bool `name:"one" help:"Checkout large files one after another, --hard mode only"`
26
+ Limit int64 `name:"limit" short:"L" help:"Omits blobs larger than n bytes or units. n may be zero. supported units: KB,MB,GB,K,M,G" default:"-1" type:"size"`
26
27
Quiet bool `name:"quiet" help:"Operate quietly. Progress is not reported to the standard error stream"`
27
28
paths []string `kong:"-"`
28
29
}
@@ -79,6 +80,18 @@ func (c *Reset) validateFlags() string {
79
80
return ""
80
81
}
81
82
83
+ func (c * Reset ) resetAutoFetch (w * zeta.Worktree ) error {
84
+ oid , err := w .Prefetch (context .Background (), c .Revision , c .Limit , c .One )
85
+ if err != nil {
86
+ return err
87
+ }
88
+ if err := w .Reset (context .Background (), & zeta.ResetOptions {Commit : oid , Mode : c .ResetMode (), Fetch : c .Fetch , One : c .One , Quiet : c .Quiet }); err != nil {
89
+ fmt .Fprintf (os .Stderr , "zeta reset to %s error: %v\n " , oid , err )
90
+ return err
91
+ }
92
+ return nil
93
+ }
94
+
82
95
func (c * Reset ) Run (g * Globals ) error {
83
96
if action := c .validateFlags (); len (action ) != 0 {
84
97
diev ("cannot %s reset with paths." , action )
@@ -103,9 +116,16 @@ func (c *Reset) Run(g *Globals) error {
103
116
}
104
117
r .Close ()
105
118
}()
119
+ w := r .Worktree ()
120
+
106
121
if len (c .Revision ) == 0 {
107
122
c .Revision = string (plumbing .HEAD )
108
123
}
124
+
125
+ if c .Fetch || c .One {
126
+ return c .resetAutoFetch (w )
127
+ }
128
+
109
129
oid , err := r .Revision (context .Background (), c .Revision )
110
130
if plumbing .IsNoSuchObject (err ) {
111
131
fmt .Fprintf (os .Stderr , "zeta reset: %s not found\n " , c .Revision )
@@ -120,20 +140,12 @@ func (c *Reset) Run(g *Globals) error {
120
140
return errors .New ("no such revision" )
121
141
}
122
142
if len (c .paths ) != 0 {
123
- w := r .Worktree ()
124
143
if err := w .ResetSpec (context .Background (), oid , slashPaths (c .paths )); err != nil {
125
144
fmt .Fprintf (os .Stderr , "zeta reset: error: %v\n " , err )
126
145
return err
127
146
}
128
147
return nil
129
148
}
130
- if c .Fetch || c .One {
131
- if err := r .FetchObjects (context .Background (), oid , c .One ); err != nil {
132
- fmt .Fprintf (os .Stderr , "zeta reset: fetch missing objects error: %v\n " , err )
133
- return err
134
- }
135
- }
136
- w := r .Worktree ()
137
149
if err := w .Reset (context .Background (), & zeta.ResetOptions {Commit : oid , Mode : c .ResetMode (), Fetch : c .Fetch , One : c .One , Quiet : c .Quiet }); err != nil {
138
150
fmt .Fprintf (os .Stderr , "zeta reset to %s error: %v\n " , oid , err )
139
151
return err
0 commit comments