/
left76
/
cli
Обзор
Документация
Войти
/
left76
/
cli
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
vendor/github.com/moby/buildkit/session/filesync/diffcopy.go
55 строк
1 KB
Sebastiaan van Stijn
bump moby/moby and dependencies to 14ce1f1cf48e9859223c6311de58aec4dc0f046c
29 сен 2017, 18:44
Не верифицирован
29 сен 2017, 18:44
98dbfee
Код
Авторство
О чём код?
package filesync import ( "os" "time" "github.com/sirupsen/logrus" "github.com/tonistiigi/fsutil" "google.golang.org/grpc" ) func sendDiffCopy(stream grpc.Stream, dir string, includes, excludes []string, progress progressCb, _map func(*fsutil.Stat) bool) error { return fsutil.Send(stream.Context(), stream, dir, &fsutil.WalkOpt{ ExcludePatterns: excludes, IncludePatterns: includes, Map: _map, }, progress) } func recvDiffCopy(ds grpc.Stream, dest string, cu CacheUpdater, progress progressCb) error { st := time.Now() defer func() { logrus.Debugf("diffcopy took: %v", time.Since(st)) }() var cf fsutil.ChangeFunc var ch fsutil.ContentHasher if cu != nil { cu.MarkSupported(true) cf = cu.HandleChange ch = cu.ContentHasher() } return fsutil.Receive(ds.Context(), ds, dest, fsutil.ReceiveOpt{ NotifyHashed: cf, ContentHasher: ch, ProgressCb: progress, }) } func syncTargetDiffCopy(ds grpc.Stream, dest string) error { if err := os.MkdirAll(dest, 0700); err != nil { return err } return fsutil.Receive(ds.Context(), ds, dest, fsutil.ReceiveOpt{ Merge: true, Filter: func() func(*fsutil.Stat) bool { uid := os.Getuid() gid := os.Getgid() return func(st *fsutil.Stat) bool { st.Uid = uint32(uid) st.Gid = uint32(gid) return true } }(), }) }