苹果默认安装是不敏感的,有时候本地跑的好好的,扔到服务器就出错了,吃了很多次亏了,决心转为大小写敏感,会造成其他问题吗?
擦,查了下果然,主机是 case-insensitive,mount 进去依然是 case-insensitive。
https://docs.docker.com/docker-for-mac/osxfs/
我不用大写路径,所以没踩过坑。
不过 docker 文档也写了,Mac 软件都是在 case-insensitive 环境开发的,不推荐格成 case-sensitive
We do not recommend reformatting your root partition as some Mac software dubiously relies on case-insensitivity to function.
让持续集成环境尽可能地接近生产环境(通常是 Linux,使用大小写敏感的文件系统),如果测试覆盖较完整的话,应该可以在测试阶段就发现问题。 如果某些文件实在懒得去写测试覆盖,可以尝试自己写个脚本去测:https://gist.github.com/5long/1abc1b7d8c1adf71044ae5a596a2dff5
至于在开发环境下检查,我的意见是干脆不要在 Mac 环境下过多考虑这种问题。直接用 Vagrant 跑个虚拟机,再运行上面的脚本好了。
有一次在 Mac 上修改 OpenWRT 并编译的时候就遇到过这个问题,OpenWRT 的编译要求里就写了需要 case sensitive 的分区。把整个分区改了肯定会有兼容性问题,不好作死。我的方法比较暴力,搞了个虚拟磁盘文件,这个虚拟磁盘弄成 case sensitive 的分区,然后挂载上来就是了。
在多人合作的项目开发时,因为 Mac 文件系统默认是大小写不敏感的,所以经常会出现一些诡异的问题。创建一个大小写敏感的工作区(workspace)来解决避免这些问题:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 100g -volname workspace ~/Documents/workspace.dmg.sparseimage
可以通过三种方式挂载镜像:
~/Documents/workspace.dmg.sparseimage
open ~/Documents/workspace.dmg.sparseimage
hdiutil attach ~/Documents/workspace.dmg.sparseimage
没必要。文件命名都是用小写和 dash 的格式,混几个大写自己看得也费劲。带有随机生成的 code 的文件名是唯一可能碰到坑的问题。不过本地环境又不会生成那么多……
写 ruby 的估计不会遇到 case sensitive 的问题,因为文件命名习惯都是小写 + 下划线,别的社区就不好说了。
目前我知道的,Adobe 的应用在 Mac 大小写敏感的分区会有问题