Para nossa pilha da Web, estamos migrando de um Windows Server para o CentOS. Para facilitar o desenvolvimento, estamos usando o Vagrant para executar VMs CentOS localmente. Estamos usando o recurso de pastas sincronizadas do Vagrant para permitir que os desenvolvedores usem seus IDEs favoritos em sua máquina host, mas descobrimos que um dos principais recursos está faltando nessa configuração: diferenciação entre maiúsculas e minúsculas no sistema de arquivos.
A pasta sincronizada dentro da VM aparentemente assume as propriedades do sistema de arquivos do host, por isso, se estou desenvolvendo a partir de uma máquina Windows ou até OSX, o sistema de arquivos não diferencia maiúsculas de minúsculas. Esse é um grande problema, pois nossos servidores de produção serão puros no CentOS e seu sistema de arquivos fará distinção entre maiúsculas e minúsculas.
A distinção entre maiúsculas e minúsculas é um dos principais motivos pelos quais queríamos ter uma VM local. Queremos impedir "Funciona na minha máquina!"
Algumas soluções alternativas que consideramos ou tentamos:
- Use lsyncd para sincronizar do compartilhamento vagrant para um local dentro da VM que diferencia maiúsculas de minúsculas
- atualizar arquivos no host não parece gerar os eventos na VM que o lsync escuta
- Faça uma partição que diferencia maiúsculas de minúsculas no host
- (Não funciona no Windows)
- Use samba
- isso pode ser uma opção, mas ainda não a examinamos.
Existe uma maneira melhor? Observe que temos desenvolvedores usando Windows, OS X e Ubuntu, e a solução precisa funcionar em qualquer lugar.
fonte
Respostas:
Eu trabalhei com o problema no OS X criando uma imagem de disco esparsa na pasta do projeto e formatando-a para diferenciar maiúsculas de minúsculas.
Depois de montar a imagem esparsa, mudei meu código para ela. Em seguida, substituiu a pasta "src" original por um link simbólico / alias para a imagem montada. Dessa forma, a pasta compartilhada diferencia maiúsculas de minúsculas no sistema operacional convidado.
Definitivamente não é a solução mais elegante, mas fecha a lacuna entre o ambiente de implantação e desenvolvimento, e foi por isso que comecei a usar o Vagrant.
Talvez uma solução semelhante também funcione para o Ubuntu e o Windows?
fonte
Eu encontrei o mesmo problema e da maneira que resolvi isso, trabalhando trabalhando no diretório na VM via git clone e adicionando um compartilhamento Samba apontando para ele, tornando-o acessível no Windows ou Mac.
fonte