diffcopy.go 651 B

123456789101112131415161718192021222324252627282930
  1. package filesync
  2. import (
  3. "time"
  4. "google.golang.org/grpc"
  5. "github.com/Sirupsen/logrus"
  6. "github.com/tonistiigi/fsutil"
  7. )
  8. func sendDiffCopy(stream grpc.Stream, dir string, excludes []string, progress progressCb) error {
  9. return fsutil.Send(stream.Context(), stream, dir, &fsutil.WalkOpt{
  10. ExcludePatterns: excludes,
  11. }, progress)
  12. }
  13. func recvDiffCopy(ds grpc.Stream, dest string, cu CacheUpdater) error {
  14. st := time.Now()
  15. defer func() {
  16. logrus.Debugf("diffcopy took: %v", time.Since(st))
  17. }()
  18. var cf fsutil.ChangeFunc
  19. if cu != nil {
  20. cu.MarkSupported(true)
  21. cf = cu.HandleChange
  22. }
  23. return fsutil.Receive(ds.Context(), ds, dest, cf)
  24. }