Simplify snapshotting. (#517)

This commit is contained in:
dlorenc 2019-01-09 15:31:02 -07:00 committed by GitHub
parent 9d10516698
commit 9ab66560db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 11 deletions

View File

@ -77,34 +77,34 @@ func (s *Snapshotter) TakeSnapshot(files []string) (string, error) {
defer t.Close()
// First add to the tar any parent directories that haven't been added
parentDirs := []string{}
parentDirs := map[string]struct{}{}
for _, file := range files {
parents := util.ParentDirectories(file)
parentDirs = append(parentDirs, parents...)
for _, p := range util.ParentDirectories(file) {
parentDirs[p] = struct{}{}
}
for _, file := range parentDirs {
}
for file := range parentDirs {
file = filepath.Clean(file)
if val, ok := snapshottedFiles[file]; ok && val {
continue
}
snapshottedFiles[file] = true
// The parent directory might already be in a previous layer.
fileAdded, err := s.l.MaybeAdd(file)
if err != nil {
return "", fmt.Errorf("Unable to add parent dir %s to layered map: %s", file, err)
}
if fileAdded {
err = t.AddFileToTar(file)
if err != nil {
if err = t.AddFileToTar(file); err != nil {
return "", fmt.Errorf("Error adding parent dir %s to tar: %s", file, err)
}
}
}
// Next add the files themselves to the tar
for _, file := range files {
// We might have already added the file above as a parent directory of another file.
file = filepath.Clean(file)
if val, ok := snapshottedFiles[file]; ok && val {
if _, ok := snapshottedFiles[file]; ok {
continue
}
snapshottedFiles[file] = true