better whiteout logic
This commit is contained in:
parent
cbf4452fe9
commit
b9d25dd5db
|
|
@ -135,7 +135,10 @@ func (s *Snapshotter) scanFullFilesystem() ([]string, []string, error) {
|
||||||
|
|
||||||
timer := timing.Start("Walking filesystem")
|
timer := timing.Start("Walking filesystem")
|
||||||
|
|
||||||
foundPaths := make([]string, 0)
|
changedPaths := make([]string, 0)
|
||||||
|
|
||||||
|
// Get a list of all the files that existed before this layer
|
||||||
|
existingPaths := s.l.getFlattenedPathsForWhiteOut()
|
||||||
|
|
||||||
godirwalk.Walk(s.directory, &godirwalk.Options{
|
godirwalk.Walk(s.directory, &godirwalk.Options{
|
||||||
Callback: func(path string, ent *godirwalk.Dirent) error {
|
Callback: func(path string, ent *godirwalk.Dirent) error {
|
||||||
|
|
@ -150,8 +153,9 @@ func (s *Snapshotter) scanFullFilesystem() ([]string, []string, error) {
|
||||||
if ok, err := s.l.CheckFileChange(path); err != nil {
|
if ok, err := s.l.CheckFileChange(path); err != nil {
|
||||||
return err
|
return err
|
||||||
} else if ok {
|
} else if ok {
|
||||||
foundPaths = append(foundPaths, path)
|
changedPaths = append(changedPaths, path)
|
||||||
}
|
}
|
||||||
|
delete(existingPaths, path)
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
Unsorted: true,
|
Unsorted: true,
|
||||||
|
|
@ -159,17 +163,13 @@ func (s *Snapshotter) scanFullFilesystem() ([]string, []string, error) {
|
||||||
)
|
)
|
||||||
timing.DefaultRun.Stop(timer)
|
timing.DefaultRun.Stop(timer)
|
||||||
timer = timing.Start("Resolving Paths")
|
timer = timing.Start("Resolving Paths")
|
||||||
// First handle whiteouts
|
|
||||||
// Get a list of all the files that existed before this layer
|
|
||||||
existingPaths := s.l.getFlattenedPathsForWhiteOut()
|
|
||||||
|
|
||||||
filesToAdd := []string{}
|
filesToAdd := []string{}
|
||||||
resolvedFiles, err := filesystem.ResolvePaths(foundPaths, s.ignorelist)
|
resolvedFiles, err := filesystem.ResolvePaths(changedPaths, s.ignorelist)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
for _, path := range resolvedFiles {
|
for _, path := range resolvedFiles {
|
||||||
delete(existingPaths, path)
|
|
||||||
if util.CheckIgnoreList(path) {
|
if util.CheckIgnoreList(path) {
|
||||||
logrus.Tracef("Not adding %s to layer, as it's whitelisted", path)
|
logrus.Tracef("Not adding %s to layer, as it's whitelisted", path)
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue