MCPcopy
hub / github.com/git-lfs/git-lfs / pull

Function pull

commands/command_pull.go:35–119  ·  view source on GitHub ↗
(filter *filepathfilter.Filter)

Source from the content-addressed store, hash-verified

33}
34
35func pull(filter *filepathfilter.Filter) {
36 ref, err := git.CurrentRef()
37 if err != nil {
38 Panic(err, tr.Tr.Get("Could not pull"))
39 }
40
41 pointers := newPointerMap()
42 logger := tasklog.NewLogger(os.Stdout,
43 tasklog.ForceProgress(cfg.ForceProgress()),
44 )
45 meter := tq.NewMeter(cfg)
46 meter.Logger = meter.LoggerFromEnv(cfg.Os)
47 logger.Enqueue(meter)
48 remote := cfg.Remote()
49
50 // will chdir to root of working tree, if one exists
51 singleCheckout := newSingleCheckout(cfg.Git, remote)
52 q := newDownloadQueue(singleCheckout.Manifest(), remote, tq.WithProgress(meter))
53 gitscanner := lfs.NewGitScanner(cfg, func(p *lfs.WrappedPointer, err error) {
54 if err != nil {
55 LoggedError(err, tr.Tr.Get("Scanner error: %s", err))
56 return
57 }
58
59 if pointers.Seen(p) {
60 return
61 }
62
63 // no need to download objects that exist locally already
64 lfs.LinkOrCopyFromReference(cfg, p.Oid, p.Size)
65 if cfg.LFSObjectExists(p.Oid, p.Size) {
66 singleCheckout.Run(p)
67 return
68 }
69
70 meter.Add(p.Size)
71 tracerx.Printf("fetch %v [%v]", p.Name, p.Oid)
72 pointers.Add(p)
73 q.Add(downloadTransfer(p))
74 })
75
76 gitscanner.Filter = filter
77
78 dlwatch := q.Watch()
79 var wg sync.WaitGroup
80 wg.Add(1)
81
82 go func() {
83 for t := range dlwatch {
84 for _, p := range pointers.All(t.Oid) {
85 singleCheckout.Run(p)
86 }
87 }
88 wg.Done()
89 }()
90
91 processQueue := time.Now()
92 if err := gitscanner.ScanLFSFiles(ref.Sha, nil); err != nil {

Callers 2

cloneCommandFunction · 0.85
pullCommandFunction · 0.85

Calls 15

LoggerFromEnvMethod · 0.95
EnqueueMethod · 0.95
AddMethod · 0.95
ScanLFSFilesMethod · 0.95
StartMethod · 0.95
CurrentRefFunction · 0.92
NewLoggerFunction · 0.92
ForceProgressFunction · 0.92
NewMeterFunction · 0.92
WithProgressFunction · 0.92
NewGitScannerFunction · 0.92
LinkOrCopyFromReferenceFunction · 0.92

Tested by

no test coverage detected