Después de consultar con expertos en la materia, programadores de varias ramas y maestros dimos con la respuesta al problema y la compartimos en esta publicación.
Solución:
Parece que estás buscando una sincronización bidireccional. Si mi entendimiento es correcto, esta respuesta te ayudará. Tenga en cuenta que aún no los he probado. Parece que el key es usar virtualbox
tipo de sincronización.
tipo (string) – El tipo de carpeta sincronizada. Si no se especifica, Vagrant elegirá automáticamente la mejor opción de carpeta sincronizada para su entorno. De lo contrario, puede especificar un tipo específico como “nfs”.
config.vm.synced_folder '../src', '/home/vagrant/src', type: "virtualbox"
Por otra parte, de acuerdo con este documento,
Si está utilizando el proveedor Vagrant VirtualBox, las carpetas compartidas de VirtualBox son el tipo de carpeta sincronizada predeterminada. Estas carpetas sincronizadas utilizan el sistema de carpetas compartidas de VirtualBox para sincronizar los cambios de archivos del invitado al host y viceversa.
Por lo tanto, no estoy seguro de por qué su tipo predeterminado no es virtualbox. De todos modos, esto vale la pena intentarlo, supongo. Más adelante en los documentos, parece haber un error en el tipo de cuadro virtual explicado en los documentos. Siga los pasos aquí si va a utilizar el tipo de sincronización de caja virtual.
Mi Vagrantfile
Se ve como esto:
Vagrant.configure(2) do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 22, host: 10170, id: "ssh"
config.vm.provision :shell, path: "VagrantProvision.sh"
config.vm.synced_folder "./", "/var/beeGame"
end
¡Como puedes ver aquí tengo la misma afirmación que la tuya! Aquí mi repositorio (puedes probarlo como ejemplo), ¡y me funciona! Uso PhpStorm para abrir este repositorio y editar archivos y todas las actualizaciones automáticamente y sincronizar desde mi máquina host (mi computadora portátil) a la máquina invitada (virtual).
En tu casolo estás haciendo bien, y vagabundo tiene que sobrescribir todo el contenido de /home/vagrant/src
con los de ../src
. ¡¡¡Es un comportamiento correcto!!! Necesitas poner tu código en src
dir en su máquina host (su computadora portátil), no en su máquina invitada (virtual).
He determinado que el problema no es ese config.vm.synced_folder '../src', '/home/vagrant/src'
sobrescribe /home/vagrant/src. El problema es que home/vagrant/src se convierte en un nuevo tipo de directorio diferente en el sistema de archivos que está vacío. Entonces, uno simplemente tiene que volver a llenarlo después de configurar el directorio compartido. Asi que…
- en invitado:
sudo mv home/vagrant/src home/vagrant/src-back
- detener invitado
- agregue una nueva carpeta sincronizada a Vagrantfile:
config.vm.synced_folder '../src', '/home/vagrant/src'
- invitado de inicio
- en invitado:
sudo mv home/vagrant/src-back/* home/vagrant/src-back/
Y las cosas deberían funcionar bien en el futuro.