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

Method resetIndex

worktree.go:374–437  ·  view source on GitHub ↗
(t *object.Tree, dirs []string, files []string)

Source from the content-addressed store, hash-verified

372}
373
374func (w *Worktree) resetIndex(t *object.Tree, dirs []string, files []string) ([]string, error) {
375 idx, err := w.r.Storer.Index()
376 if err != nil {
377 return nil, err
378 }
379
380 b := newIndexBuilder(idx)
381
382 changes, err := w.diffTreeWithStaging(t, true)
383 if err != nil {
384 return nil, err
385 }
386
387 removedFiles := make([]string, 0, len(changes))
388 filesMap := buildFilePathMap(files)
389 for _, ch := range changes {
390 a, err := ch.Action()
391 if err != nil {
392 return nil, err
393 }
394
395 var name string
396 var e *object.TreeEntry
397
398 switch a {
399 case merkletrie.Modify, merkletrie.Insert:
400 name = ch.To.String()
401 e, err = t.FindEntry(name)
402 if err != nil {
403 return nil, err
404 }
405 case merkletrie.Delete:
406 name = ch.From.String()
407 }
408
409 if len(files) > 0 {
410 contains := inFiles(filesMap, name)
411 if !contains {
412 continue
413 }
414 }
415
416 b.Remove(name)
417 removedFiles = append(removedFiles, name)
418 if e == nil {
419 continue
420 }
421
422 b.Add(&index.Entry{
423 Name: name,
424 Hash: e.Hash,
425 Mode: e.Mode,
426 })
427
428 }
429
430 b.Write(idx)
431

Callers 1

ResetSparselyMethod · 0.95

Calls 13

diffTreeWithStagingMethod · 0.95
newIndexBuilderFunction · 0.85
buildFilePathMapFunction · 0.85
inFilesFunction · 0.85
FindEntryMethod · 0.80
SkipUnlessMethod · 0.80
IndexMethod · 0.65
StringMethod · 0.65
SetIndexMethod · 0.65
ActionMethod · 0.45
RemoveMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected