Fast implementation of Git in pure Go
1package mix
2
3import (
4 "errors"
5
6 "codeberg.org/lindenii/furgit/objectstore"
7)
8
9// Refresh forwards refresh calls to refresh-capable backends.
10func (mix *Mix) Refresh() error {
11 mix.mu.RLock()
12
13 backends := make([]objectstore.Store, 0, len(mix.backendNodeByStore))
14 for node := mix.backendHead; node != nil; node = node.next {
15 backends = append(backends, node.backend)
16 }
17
18 mix.mu.RUnlock()
19
20 var errs []error
21
22 for _, backend := range backends {
23 err := backend.Refresh()
24 if err != nil {
25 errs = append(errs, err)
26 }
27 }
28
29 return errors.Join(errs...)
30}