¿Cómo puedo forzar a git a NO replace el contenido de la carpeta?

Alojo mi proyecto de php en cloudcontrol.com, en mi proyecto tengo una carpeta estática donde guardo las imágenes del perfil de usuario, así:

uploads/profile/userpic1.jpg uploads/profile/userpic2.jpg uploads/profile/userpic2.jpg 

I .gitignore todos los files dentro de la carpeta de perfil con el file .gitignore:

 * !.gitignore 

en mi entorno local, cuando realizo algunas testings, cargo algunas fotos dentro de esa carpeta. En mi entorno de producción, los usuarios también cambian sus imágenes de perfil y las guardan en esa carpeta.

Mi problema es:

¡Cada vez que envío actualizaciones al server de producción, perdí todos los files dentro del directory de perfil en el server! Parece que git (o cloudcontrol) SUSTITUYE el directory del perfil no solo actualiza su contenido sin tocar los files / imágenes anteriores.

Algún consejo, ¿cómo puedo solucionar esto? Pensé que era solo un problema de .gitignore e hice todo lo posible para que esto funcionara pero no pude. Soy algo nuevo en las cosas de Git y PaaS.

Gracias

CloudControl, al igual que la mayoría de los proveedores de services en la nube, reemplaza la carpeta completa de la aplicación cuando se implementa. Esto generalmente se hace para permitir la escala horizontal y para garantizar que cada implementación se base en el mismo estado (vacío).

Consulte también la documentation sobre el sistema de files no persistente :

Sistema de files no persistente

TL; DR:

  • Cada contenedor tiene su propio sistema de files.
  • El sistema de files no es persistente.
  • No almacene las cargas en el sistema de files.

Los deployments en la plataforma cloudControl tienen acceso a un sistema de files grabable. Sin embargo, este sistema de files no es persistente. Es posible que los datos escritos vuelvan a estar disponibles en requestes futuras, dependiendo de cómo el nivel de routing enrute las requestes a través de los contenedores disponibles, y se eliminan después de cada implementación. Esto incluye deployments que se activan manualmente, pero también implementaciones realizadas por la propia plataforma durante el funcionamiento normal.

Para las cargas de los clientes (por ejemplo, imágenes de perfil de usuario), recomendamos almacenes de objects como Amazon S3 o la function GridFS disponible como parte del complemento MongoLab .

Entonces, si desea almacenar files dinámicamente, tendrá que search una solución separada para eso.

Así es como funcionan la mayoría de las aplicaciones de implementación que usan git. En cualquier caso, git no es el más adecuado para el control de versiones de activos, sino que debe utilizarse principalmente para el código. Una vez dicho esto, puede utilizar .gitignore siempre que tenga un identificador claro entre el contenido que desea versionar y las versiones que no desea versionar. Diga que todos sus propios files comienzan con la version la palabra, puede hacer algo como esto

 /public/assets/images/users/* !/public/assets/images/users/version* 
    Intereting Posts