MCPcopy
hub / github.com/go-git/go-git / ResetSparsely

Method ResetSparsely

worktree.go:283–332  ·  view source on GitHub ↗
(opts *ResetOptions, dirs []string)

Source from the content-addressed store, hash-verified

281}
282
283func (w *Worktree) ResetSparsely(opts *ResetOptions, dirs []string) error {
284 if err := opts.Validate(w.r); err != nil {
285 return err
286 }
287
288 if opts.Mode == MergeReset {
289 unstaged, err := w.containsUnstagedChanges()
290 if err != nil {
291 return err
292 }
293
294 if unstaged {
295 return ErrUnstagedChanges
296 }
297 }
298
299 if err := w.setHEADCommit(opts.Commit); err != nil {
300 return err
301 }
302
303 if opts.Mode == SoftReset {
304 return nil
305 }
306
307 t, err := w.r.getTreeFromCommitHash(opts.Commit)
308 if err != nil {
309 return err
310 }
311
312 var removedFiles []string
313 if opts.Mode == MixedReset || opts.Mode == MergeReset || opts.Mode == HardReset {
314 if removedFiles, err = w.resetIndex(t, dirs, opts.Files); err != nil {
315 return err
316 }
317 }
318
319 if opts.Mode == MergeReset && len(removedFiles) > 0 {
320 if err := w.resetWorktree(t, removedFiles); err != nil {
321 return err
322 }
323 }
324
325 if opts.Mode == HardReset {
326 if err := w.resetWorktree(t, opts.Files); err != nil {
327 return err
328 }
329 }
330
331 return nil
332}
333
334// Restore restores specified files in the working tree or stage with contents from
335// a restore source. If a path is tracked but does not exist in the restore,

Callers 3

CheckoutMethod · 0.95
ResetMethod · 0.95
TestResetSparselyMethod · 0.95

Calls 6

setHEADCommitMethod · 0.95
resetIndexMethod · 0.95
resetWorktreeMethod · 0.95
getTreeFromCommitHashMethod · 0.80
ValidateMethod · 0.45

Tested by 1

TestResetSparselyMethod · 0.76