¿Cuál es tu favorito de la web de la implementación de la aplicación de flujo de trabajo con SVN?

StackOverflow https://stackoverflow.com/questions/3667

  •  08-06-2019
  •  | 
  •  

Pregunta

En la actualidad estamos usando un poco complicado de implementación de la instalación que consiste en un remoto servidor SVN, 3 ramas del SVN para DEV, ETAPA, y PROD, la promoción de código entre ellos a través de parches, etc.Me pregunto qué utilizar para su implementación en un pequeño equipo de desarrollo de la situación?

¿Fue útil?

Solución

tronco para el desarrollo, y una rama (la producción) para la producción de cosas.

En mi equipo, tengo un VirtualHost que apunta a la rama troncal, para poner a prueba mis cambios.

Ningún commit en el tronco desencadena una confirmación de gancho que hace un svn de exportación y sincronización con el servidor en línea de la dev URL - de modo que si el sitio es stackoverflow.com a continuación, este gancho se actualiza automáticamente dev.stackoverflow.com

Entonces yo uso svnmerge para combinar seleccionado parches desde el tronco hasta la producción en mi local de las cajas.Tengo un VirtualHost de nuevo en mi máquina local que apunta a la rama de producción.

Cuando me comprometo la fusión de los cambios a la rama de producción, de nuevo un SVN export gancho actualizaciones de la producción (en vivo) la exportación y el sitio es vivir!

Otros consejos

Cuando yo trabajaba en un pequeño equipo de desarrollo (pequeña significado de mí, otro programador y el jefe), fue bastante caótico desorden.Sin embargo, hemos encontrado que la Asignación de un "guardián" tipo de proceso funcionó para nosotros.

El portero era la persona que había hecho la mayor parte del trabajo sobre la aplicación (en este caso, yo tenía 2 proyectos que he desarrollado desde el suelo, había como 4).

Básicamente, cada vez que tenía que trabajar en mis proyectos, que había que notificar a mí que estaba haciendo un trabajo, me gustaría asegurarse de que el repositorio fue para arriba-a-fecha y edificabilidad, él tendría que tirar abajo, hacer sus cambios, luego de cometer.Iba a decirme que estaba hecho, me iba a tirar abajo, construir y desplegar.Si hubo DB cambios que hemos tenido un DB de Cambio de carpeta con todos los scripts que corrija la DB.

Es, obviamente, tiene un montón de agujeros en ella, pero el proceso trabajado por nosotros, y nos mantuvo en a partir de la construcción de uno sobre el otro.

No he tenido ningún problema con las etiquetas comunes/rama/tronco de la organización.

General en curso de desarrollo que ocurre en el tronco.

El mantenimiento de un comunicado en la producción ocurre en la versión apropiada de la rama.

Cambios en la liberación de la rama de la que todavía son relevantes para el tronco se fusionan.

Cuando una nueva versión está lista para su implementación es de etiquetado de tronco y una rama se crea a partir de esa etiqueta.La nueva versión de la rama está desprotegido para el servidor, en paralelo a la versión actual.Cuando sea tiempo de cambiar, las rutas de acceso son malabares ("mv appdir appdir.viejo && mv appdir.nueva appdir").

Los desarrolladores de apoyo a la producción de liberación, a continuación, svn cambiar su copia de trabajo a la nueva rama, o hacer una nueva salida de la misma.

Tres ramas suena como un trabajo extra.

Diferencias ambientales pueden ser manejados por las distintas versiones de los archivos relevantes en el tronco.es decir,la base de datos.yml y base de datos.yml.prod.El proceso de implementación debe ser consciente del medio ambiente y simplemente copiar el por medio de archivos a través de la fábrica.

Un simple tronco de la rama contiene la mayoría de código actual y, a continuación, cortar una rama cada vez que vamos a vivir.Esto parece funcionar muy efectivamente.Usted puede ir fácilmente a la rama anterior siempre que la corriente de la rama que se corta para el sistema falla.También, es fácil corregir los errores en la rama en la que se viven actualmente, y desde la rama efectivamente muere cuando se corta uno nuevo, no sólo es 1 real de la rama que usted necesita para trabajar (y, a continuación, combinar revisiones de allí a la rama viva).

No utilizamos las ramas para la puesta en escena en la web relacionadas con la materia;sólo para las pruebas experimentales de las cosas que va a tomar mucho tiempo (leer:más de un día) a la mezcla de nuevo en el tronco.El tronco, en "integración continua" de estilo, representa un (esperemos) de trabajo, estado actual.

Por lo tanto, la mayoría de los cambios se compromete directamente al tronco.Un CruiseControl.NET servidor automáticamente la actualización en un equipo que también se ejecuta IIS y ha actualizado las copias de todos los extras del sitio de los recursos disponibles, por lo que el sitio puede ser totalmente limpia probado en casa.Después de las pruebas, los archivos son subidos al servidor público.

Yo no diría que es el perfecto enfoque, pero es muy simple (y por lo tanto adecuado para nuestra relativamente pequeña del personal) y relativamente fuerte, y funciona bien.

Tronco contiene la corriente "principal" de desarrollo de código base.

Un desarrollador se suelen crear una rama individual por cualquier medio y largo plazo del proyecto que podría manguera el tronco codebase y en el camino de los otros desarrolladores.Cuando está completo se va a fusionar de nuevo en el tronco.

Vamos a crear un etiquetado de liberación cada vez que nos empuje código de la producción.La carpeta en /etiquetas es simplemente el número de versión.

Para implementar la producción que estamos haciendo un SVN de Exportación para la puesta en escena.Cuando satisfactoria utilizamos un simple rsync para rodar fuera a los grupos de producción.

Yo recomiendo el libro (actualmente en cortes en bruto) Entrega Continua, que describe un proceso completo para la gestión de la entrega de software, basado en la continua integración de los principios (entre otros).

Me desagrada la rama y la combinación de enfoque, ya que pueden ser muy complicadas, y es bastante inútil ya que acaban de pasar tiempo en actividades que en realidad no se entregará ningún nuevo valor.Ya has desarrollado, probado, y fija el código una vez, ¿por qué crear una situación (copia el código a otra rama), que requiere para realizar este trabajo?

De todos modos, la manera de evitar las ramas y la fusión es construir su despliegue de artefactos de tronco, y promover el construido artefactos (lugar de origen) a medida que pasa la prueba, puesta en escena, etc.De esta manera usted está 100% seguro de que la cosa se está poniendo en producción es la misma cosa que he probado.

Si usted tiene diferentes características que puede necesitar para ser publicado en diferentes horarios, cambiando su enfoque de cómo implementar (hacer funcionalidad configurable, o mejor aún modular) puede ayudar a mantener un desarrollo único tronco.

Utilizamos la liberación de ramificación - esto parece ser más eficiente para nosotros que la función de ramificación que estábamos haciendo.

No hacen diferentes ramas para los diferentes ambientes.

Yo personalmente trabajo a nivel local (desarrollo), la adición o la fijación de características, y cuando yo creo que es listo, yo me comprometo a tronco (producción).En el servidor de producción acabo de hacer un svn update.

Yo trabajo con una situación similar a la que actualmente tiene.Yo tenía la tarea de encontrar una mejor solución y se corrió a lo largo de las líneas de la siguiente.

La rama viva representa a los servidores en su estado actual.

Cualquier trabajo de desarrollo se debe hacer en una rama que se toma de vivir.Esto podría ser una persona de media hora de trabajo o un año largo de múltiples proyectos de equipo.Tan a menudo como es del agrado de los cambios de vivir se pueden combinar en estas ramas de desarrollo.

Antes de una pieza de trabajo va en vivo, los cambios de vivir se fusionan de nuevo y está etiquetado como un potencial de liberación.Esta versión se ha probado en el entorno de ensayo y si pasa las pruebas con el nuevo live es tomado de la etiqueta.

Es posible combinar varias piezas de trabajo en una versión si que funciona mejor.

Esto significa que es bastante simple para mantener el desarrollo de las ramas hasta la fecha con vivir y si una pieza de trabajo en el desarrollo se ha caído es mínima ordenando a hacer.

A cambio de trabajar en un proyecto a otro un desarrollador puede simplemente svn cambiar su entorno de trabajo a una rama diferente.

Uno de los problemas que hemos tenido con el sistema como el que usted describe es que DEV puede conseguir fuera de fecha con PROD bastante rápido, por lo que no se están desarrollando en contra de la vida y no es fácil de detectar cruz dependencias hasta el escenario.La solución anterior, resuelve estos problemas aunque sigue siendo bastante ligero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top