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

Method checkoutChange

worktree.go:487–515  ·  view source on GitHub ↗
(ch merkletrie.Change, t *object.Tree, idx *indexBuilder)

Source from the content-addressed store, hash-verified

485}
486
487func (w *Worktree) checkoutChange(ch merkletrie.Change, t *object.Tree, idx *indexBuilder) error {
488 a, err := ch.Action()
489 if err != nil {
490 return err
491 }
492
493 var e *object.TreeEntry
494 var name string
495 var isSubmodule bool
496
497 switch a {
498 case merkletrie.Modify, merkletrie.Insert:
499 name = ch.To.String()
500 e, err = t.FindEntry(name)
501 if err != nil {
502 return err
503 }
504
505 isSubmodule = e.Mode == filemode.Submodule
506 case merkletrie.Delete:
507 return rmFileAndDirsIfEmpty(w.Filesystem, ch.From.String())
508 }
509
510 if isSubmodule {
511 return w.checkoutChangeSubmodule(name, a, e, idx)
512 }
513
514 return w.checkoutChangeRegularFile(name, a, t, e, idx)
515}
516
517func (w *Worktree) containsUnstagedChanges() (bool, error) {
518 ch, err := w.diffStagingWithWorktree(false, true)

Callers 1

resetWorktreeMethod · 0.95

Calls 6

rmFileAndDirsIfEmptyFunction · 0.85
FindEntryMethod · 0.80
StringMethod · 0.65
ActionMethod · 0.45

Tested by

no test coverage detected