¿Cómo upload files nuevos / modificados del server de desarrollo al de producción?

Recientemente comencé a incorporar buenas prácticas en mi flujo de trabajo de desarrollo, así que dividí el server de desarrollo y el de producción. También incorporé un sistema de control de versiones usando Subversion (Tortoise SVN).

Ahora tengo el problema de sincronizar el server de producción (hosting compartido Apache) con los files de la última versión de desarrollo en mi máquina local.

Antes no tenía este problema porque trabajaba directamente con los files del server a través de Filezilla. Pero ahora no sé cómo transferir los files de manera eficiente y cuáles son las buenas prácticas en este aspecto.

Leí algo sobre Ant y Phing pero no estoy seguro de si esto es apropiado para mí o si es una complejidad innecesaria.

Rsync es una herramienta multiplataforma diseñada para ayudar en situaciones como esta; Lo he usado para propósitos similares en múltiples ocasiones. Este tutorial de DevShed puede ser de alguna ayuda.

No creo que quiera "automatizarlo", sino más bien establecer control sobre su implementación y process de integración. Generalmente me gusta SVN pero tiene algunos errores y un problema que tengo es que no es compatible con la línea de base; en cambio, necesitas crear una twig física de tu repository si quieres tener una versión estable para promocionar a entornos más avanzados. mientras continúa avanzando el tronco .

De todos modos, debes mirar la continuous integration y Jenkins . Este es un tema bastante amplio al que no se puede dar una respuesta específica. Hay muchos ins, outs, what-have-yous. Depende de la plataforma de la aplicación, los componentes, ¿tiene cambios en la database? ¿Se trata de web services externos o API de terceros, etc.?

Quizás haya soluciones más estructuradas, pero con Tortoise SVN puede exportar solo los files modificados entre versiones en una estructura de tree de carpetas. Y luego, cargue como siempre en Filezilla.

Eche un vistazo a: http://verysimple.com/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/

  • Usando TortoiseSVN, haga clic derecho en su carpeta de trabajo y select "Mostrar logging" en el menu de TortoiseSVN.
  • Haga clic en la revisión que se publicó por última vez
  • Ctrl + Haga clic en la revisión HEAD (o en la revisión que desee lanzar) para que se destaquen tanto las revisiones antiguas como las nuevas.
  • Haga clic con el button derecho en cualquiera de las revisiones resaltadas y select "Comparar revisiones". Esto abrirá una window de dialog que enumera todos los files nuevos / modificados.
  • Seleccione todos los files de esta list (Ctrl + a) luego haga clic derecho en los files resaltados y select "Exportar selección a …"

Nota al margen:

Debe abrir más detalles sobre su flujo de trabajo y configuration; las soluciones aplicables dependen de ello. Veo 4 nodos principales en el juego: Workplace, Repo Server, DEV, PROD, algunos nodos pueden estar unidos (1 + 2, 2 + 3), pueden tener diferentes herramientas (¿tiene SSH, Rsync, NFS, clientes de Subversion? en DEV | PROD). Todos los detalles importan

En cualquier caso, los repositorys de Subversion tienen tal cosa, como ganchos , en su caso el enganche posterior a la confirmación (ejecutado en el lado del server de repository después de cada confirmación) puede ser utilizado

Si este enlace (cualquier código, que se puede ejecutar en modo desatendido) puede definir e implementar cualquier regla para implementar en cualquier objective bajo cualquier condición. Solo debes saber

  • Qué transporte se usará para transferir files
  • ¿Cuál es su espacio web en los serveres? (Copias de trabajo de files limpios no versionados – ambas soluciones tienen sets pro y contra) – definirá qué política de implementación ("exportar" o "actualizar") debe implementar en el enganche

Algunos enlaces a scripts , que exportan files, afectados por la revisión (o range de revisiones) en un tree no versionado