Pastas sincronizadas com o Vagrant não diferenciam maiúsculas de minúsculas

10

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.

Scott Coldwell
fonte
Boa pergunta, mas também o desenvolvimento orientado para SF eu sinto - você pode ter melhor sorte no Stack Overflow, assinalaram para a migração :)
Craig Watson
1
Sinceramente, acho que não pertence ao SO, pois o fato é que isso é para desenvolvimento é em grande parte imaterial; a pergunta é sobre a distinção entre maiúsculas e minúsculas do sistema de arquivos no que se refere a convidados e hosts vagantes.
Phoebus

Respostas:

6

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?

Jason Suave
fonte
O Windows não possui um sistema de arquivos com distinção entre maiúsculas e minúsculas.
Michael Hampton
Obrigado Jason. Eu considerei isso e funcionaria no meu mac e no ubuntu, mas não funcionaria no Windows. Ele também adiciona uma etapa manual para criar um ambiente de desenvolvimento, que eu esperava escrever totalmente usando o vagrant / chef. Pode não haver outra opção, no entanto.
Scott Coldwell
2
A distinção entre maiúsculas e minúsculas é uma das principais razões pelas quais me virei para o Vagrant, depois de anos usando o MAMP, por isso estou realmente decepcionado que isso continue sendo um problema. Não acredito que isso não esteja mais claro nos documentos do Vagrant.
precisa
3
@JasonSuave O problema está no VirtualBox e no que ele usa para as montagens, não no Vagrant. O Vagrant está controlando apenas as montagens do VirtualBox. Você pode ter experiências diferentes no VMWare ... Eu não tentei.
24414 Brad
0

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.

Thazar
fonte