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

Method Prune

prune.go:33–66  ·  view source on GitHub ↗
(opt PruneOptions)

Source from the content-addressed store, hash-verified

31}
32
33func (r *Repository) Prune(opt PruneOptions) error {
34 los, ok := r.Storer.(storer.LooseObjectStorer)
35 if !ok {
36 return ErrLooseObjectsNotSupported
37 }
38
39 pw := newObjectWalker(r.Storer)
40 err := pw.walkAllRefs()
41 if err != nil {
42 return err
43 }
44 // Now walk all (loose) objects in storage.
45 return los.ForEachObjectHash(func(hash plumbing.Hash) error {
46 // Get out if we have seen this object.
47 if pw.isSeen(hash) {
48 return nil
49 }
50 // Otherwise it is a candidate for pruning.
51 // Check out for too new objects next.
52 if !opt.OnlyObjectsOlderThan.IsZero() {
53 // Errors here are non-fatal. The object may be e.g. packed.
54 // Or concurrently deleted. Skip such objects.
55 t, err := los.LooseObjectTime(hash)
56 if err != nil {
57 return nil
58 }
59 // Skip too new objects.
60 if !t.Before(opt.OnlyObjectsOlderThan) {
61 return nil
62 }
63 }
64 return opt.Handler(hash)
65 })
66}

Callers 3

testPruneMethod · 0.80

Calls 6

newObjectWalkerFunction · 0.85
walkAllRefsMethod · 0.80
isSeenMethod · 0.80
ForEachObjectHashMethod · 0.65
IsZeroMethod · 0.65
LooseObjectTimeMethod · 0.65

Tested by 3

testPruneMethod · 0.64