对于我们的 Web 堆栈,我们正在从 Windows Server 迁移到 CentOS。为了方便开发,我们正在利用 Vagrant 在本地运行 CentOS VM。我们正在使用 Vagrant 的同步文件夹功能允许开发人员在主机上使用他们最喜欢的 IDE,但我们发现此设置缺少一个关键功能:文件系统区分大小写。
VM 中的同步文件夹显然具有主机文件系统的属性,因此如果我从 Windows 计算机甚至 OSX 进行开发,文件系统不区分大小写。这是一个大问题,因为我们的生产服务器将是纯 CentOS,其文件系统将要区分大小写。
区分大小写是我们希望拥有本地虚拟机的主要原因之一。我们希望避免“它在我的计算机上运行正常!”
我们考虑或尝试过的一些解决方法:
- 使用同步从 vagrant share 同步到虚拟机中区分大小写的位置
- 更新主机上的文件似乎不会在虚拟机中生成 lsync 监听的事件
- 在主机上创建区分大小写的分区
- (不适用于 Windows)
- 使用 samba
- 这也许是一个选择,但我们还没有审查过。
有更好的方法吗?请注意,我们的开发人员使用 Windows、OS X 和 Ubuntu,因此解决方案需要在任何地方都有效。
答案1
我通过在项目文件夹中创建稀疏磁盘映像并将其格式化为区分大小写来解决 OS X 上的问题。
挂载稀疏映像后,我将代码移到其上。然后用挂载映像的符号链接/别名替换原始“src”文件夹。这样,共享文件夹在客户操作系统中区分大小写。
这绝对不是最优雅的解决方案,但它确实缩小了部署和开发环境之间的差距,这也是我开始使用 Vagrant 的原因。
也许类似的解决方法也适用于 Ubuntu 和 Windows?
答案2
我遇到了同样的问题,我解决问题的方法是通过 git clone 获取 VM 上的工作目录并添加指向该目录的 Samba 共享,使其可以在 Windows 或 Mac 上访问。