Selaa lähdekoodia

Merge pull request #35793 from Microsoft/33107

Windows: Case-insensitive filename matching against builder cache
Sebastiaan van Stijn 7 vuotta sitten
vanhempi
commit
a59061da5f
1 muutettua tiedostoa jossa 9 lisäystä ja 2 poistoa
  1. 9 2
      pkg/tarsum/fileinfosums.go

+ 9 - 2
pkg/tarsum/fileinfosums.go

@@ -1,6 +1,10 @@
 package tarsum
 package tarsum
 
 
-import "sort"
+import (
+	"runtime"
+	"sort"
+	"strings"
+)
 
 
 // FileInfoSumInterface provides an interface for accessing file checksum
 // FileInfoSumInterface provides an interface for accessing file checksum
 // information within a tar file. This info is accessed through interface
 // information within a tar file. This info is accessed through interface
@@ -35,8 +39,11 @@ type FileInfoSums []FileInfoSumInterface
 
 
 // GetFile returns the first FileInfoSumInterface with a matching name.
 // GetFile returns the first FileInfoSumInterface with a matching name.
 func (fis FileInfoSums) GetFile(name string) FileInfoSumInterface {
 func (fis FileInfoSums) GetFile(name string) FileInfoSumInterface {
+	// We do case insensitive matching on Windows as c:\APP and c:\app are
+	// the same. See issue #33107.
 	for i := range fis {
 	for i := range fis {
-		if fis[i].Name() == name {
+		if (runtime.GOOS == "windows" && strings.EqualFold(fis[i].Name(), name)) ||
+			(runtime.GOOS != "windows" && fis[i].Name() == name) {
 			return fis[i]
 			return fis[i]
 		}
 		}
 	}
 	}