From cc35564b1db8dae25d6e4a9003663b37ec714556 Mon Sep 17 00:00:00 2001 From: tongjingran Date: Thu, 31 Dec 2020 16:07:07 +0800 Subject: [PATCH] shadow symlink file instead of skip --- pkg/build/legacy.go | 11 ++++++++++- pkg/build/legacy_test.go | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/build/legacy.go b/pkg/build/legacy.go index 296f777..5bcd009 100644 --- a/pkg/build/legacy.go +++ b/pkg/build/legacy.go @@ -93,5 +93,14 @@ func (b *Build) cpNonStandardLegacy() { // skipCopy skip copy .git dir and irregular files func skipCopy(src string, info os.FileInfo) (bool, error) { - return strings.HasSuffix(src, "/.git") || (!info.IsDir() && !info.Mode().IsRegular()), nil + irregularModeType := os.ModeNamedPipe | os.ModeSocket | os.ModeDevice | os.ModeCharDevice | os.ModeIrregular + if strings.HasSuffix(src, "/.git") { + log.Infof("Skip .git dir [%s]", src) + return true, nil + } + if info.Mode()&irregularModeType != 0 { + log.Warnf("Skip file [%s], the file mode is [%s]", src, info.Mode().String()) + return true, nil + } + return false, nil } diff --git a/pkg/build/legacy_test.go b/pkg/build/legacy_test.go index 2bd932c..ae2e5cc 100644 --- a/pkg/build/legacy_test.go +++ b/pkg/build/legacy_test.go @@ -118,7 +118,7 @@ func TestSkipCopy(t *testing.T) { "irregular file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeIrregular}, expected: true}, "dir file": {inputSrc: "/test", inputInfo: MockFile{isDir: true, mode: os.ModeDir}, expected: false}, "temporary file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeTemporary}, expected: false}, - "symlink file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeSymlink}, expected: true}, + "symlink file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeSymlink}, expected: false}, "device file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeDevice}, expected: true}, "named pipe file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeNamedPipe}, expected: true}, "socket file": {inputSrc: "/test", inputInfo: MockFile{mode: os.ModeSocket}, expected: true},