Browse Source

archive.ApplyLayer() - handle directory whiteouts

When directories are white-outed we can get called with the previously
removed directories. Handle this with os.IsNotExist(error).
Alexander Larsson 11 years ago
parent
commit
6f3c32eb18
1 changed files with 5 additions and 0 deletions
  1. 5 0
      archive/diff.go

+ 5 - 0
archive/diff.go

@@ -20,6 +20,11 @@ func ApplyLayer(dest string, layer Archive) error {
 	// Step 2: walk for whiteouts and apply them, removing them in the process
 	// Step 2: walk for whiteouts and apply them, removing them in the process
 	err := filepath.Walk(dest, func(fullPath string, f os.FileInfo, err error) error {
 	err := filepath.Walk(dest, func(fullPath string, f os.FileInfo, err error) error {
 		if err != nil {
 		if err != nil {
+			if os.IsNotExist(err) {
+				// This happens in the case of whiteouts in parent dir removing a directory
+				// We just ignore it
+				return filepath.SkipDir
+			}
 			return err
 			return err
 		}
 		}