func PushObj(pachClient *pachclient.APIClient, commit *pfs.Commit, objClient obj.Client, root string) error {
	var eg errgroup.Group
	sem := make(chan struct{}, 200)
	if err := pachClient.Walk(commit.Repo.Name, commit.ID, "", func(fileInfo *pfs.FileInfo) error {
		if fileInfo.FileType != pfs.FileType_FILE {
			return nil
		}
		eg.Go(func() (retErr error) {
			sem <- struct{}{}
			defer func() { <-sem }()
			w, err := objClient.Writer(pachClient.Ctx(), filepath.Join(root, fileInfo.File.Path))
			if err != nil {
				return err
			}
			defer func() {
				if err := w.Close(); err != nil && retErr == nil {
					retErr = err
				}
			}()
			return pachClient.GetFile(commit.Repo.Name, commit.ID, fileInfo.File.Path, 0, 0, w)
		})
		return nil
	}); err != nil {
		return err
	}
	return eg.Wait()
}
func PushObj(pachClient *pachclient.APIClient, commit *pfs.Commit, objClient obj.Client, root string) error {
	var eg errgroup.Group
	sem := make(chan struct{}, 200)
	if err := pachClient.Walk(commit.Repo.Name, commit.ID, "", func(fileInfo *pfs.FileInfo) error {
		if fileInfo.FileType != pfs.FileType_FILE {
			return nil
		}
		eg.Go(func() (retErr error) {
			sem <- struct{}{}
			defer func() { <-sem }()
			w, err := objClient.Writer(pachClient.Ctx(), filepath.Join(root, fileInfo.File.Path))
			if err != nil {
				return err
			}
			defer func() {
				if err := w.Close(); err != nil && retErr == nil {
					retErr = err
				}
			}()
			return pachClient.GetFile(commit.Repo.Name, commit.ID, fileInfo.File.Path, 0, 0, w)
		})
		return nil
	}); err != nil {
		return err
	}
	return eg.Wait()
}
func PushObj ( pachClient * pachclient . APIClient , commit * pfs . Commit , objClient obj . Client , root string ) error { var eg errgroup . Group sem := make ( chan struct { } , 200 ) if err := pachClient . Walk ( commit . Repo . Name , commit . ID , " " , func ( fileInfo * pfs . FileInfo ) error { if fileInfo . FileType != pfs . FileType_FILE { return nil } eg . Go ( func ( ) ( retErr error ) { sem <- struct { } { } defer func ( ) { <- sem } ( ) w , err := objClient . Writer ( pachClient . Ctx ( ) , filepath . Join ( root , fileInfo . File . Path ) ) if err != nil { return err } defer func ( ) { if err := w . Close ( ) ; err != nil && retErr == nil { retErr = err } } ( ) return pachClient . GetFile ( commit . Repo . Name , commit . ID , fileInfo . File . Path , 0 , 0 , w ) } ) return nil } ) ; err != nil { return err } return eg . Wait ( ) }
// PushObj pushes data from commit to an object store.
PushObj pushes data from commit to an object store .