una soluciones sobre ramas rama que público publico problemáticas problematicas poder para niños legislativa las judicial funciones ejecutiva documento dificultades version-control continuous-integration feature-branch featuretoggle

version-control - soluciones - rama legislativa



Característica alterna entre las ramas de funciones (3)

La función de alternancia requiere una disciplina muy estricta, ya que el código de bloqueo / oscuro está llegando a la producción.

Estoy de acuerdo con Electrawn, he estado utilizando la función de ramificación a lo largo de 6 años, porque en nuestro caso, no tenemos los requisitos previos.

También es importante comprender que la "Estrategia de Toogle" transfiere el esfuerzo que se gasta en la Estrategia de sucursales de características (fusión) a otro momento.

http://martinfowler.com/bliki/FeatureToggle.html

Es muy importante retirar los conmutadores una vez que las funciones pendientes se hayan reducido en producción. Esto implica eliminar las definiciones en el archivo de configuración y todo el código que las usa. De lo contrario, obtendrás un montón de botones que nadie recordará cómo usarlos. En un ejemplo memorable del que me enteré, se requería hacer una recompilación especial del kernel de Linux para manejar suficientes conmutadores de línea de comando.

Nota: Siguiendo los principios de SCM, si alguien abre y edita un archivo, podría ser código roto.

Por lo tanto, en mi opinión, no creo en una "mejor opción en todos los casos", ya que depende de la cultura de su equipo y si tiene la cubierta de la prueba.

Bueno, es una pregunta muy polémica.

Sigo prefiriendo la estrategia de Feature Branches en mi caso. Manteniendo las mejores prácticas de SCM y planificando la hoja de ruta, el proceso de fusión tiende a ser una manera fácil. Durante este año, escuché a mucha gente quejarse sobre el proceso de fusión, pero en muchos casos el problema de la fusión es el mismo en mi experiencia, "La comunicación falla" :)

Perdón por una respuesta poco precisa, pero creo que hay algunos aspectos humanos en torno a este tema de mejor elección en SCM.

¿Qué son "Alternancia de funciones" y "Sucursales de funciones" y cuál es la diferencia entre ellas?

¿Cuáles son los pros y los contras? ¿Por qué es uno mejor que el otro?

Encontré algunos artículos en Google sobre esto, y tiendo a estar en el campo de "Cambios de características", pero no estoy convencido de que "Conmutación de funciones" sea la mejor opción en todos los casos.


Discuto esto en profundidad en mi blog: http://geekswithblogs.net/Optikal/archive/2013/02/10/152069.aspx

En resumen, las ramas de características le proporcionarán un mejor aislamiento, pero requieren que se enfrente al dolor de la integración diferida y se fusione. Las alternancias le brindan una integración continua, pero le exigen que diseñe / implemente su código de tal manera que las ayudas se alternen e introduzcan el riesgo de que el código de función sin terminar pueda afectar negativamente a la producción.

Puede usar ambas ramas y alternar entre sí (no son mutuamente excluyentes). En cuanto a decidir cuál usar en cada escenario, mi opinión es que la opción predeterminada debería ser alterna a menos que lo siguiente sea verdadero:

  • difícil de ocultar la funcionalidad detrás de un interruptor
  • tiene un impacto potencial en un área de la aplicación que no tiene pruebas exhaustivas

Si cualquiera de esas condiciones es verdadera, probablemente usaría una rama de característica en lugar de alternar.


La característica alterna es la metodología utilizada en una cadena de integración continua / entrega continua (CI / CD) (metodología de proyecto Agile / Kanban). Básicamente, usted envía nuevas funciones a la producción en un estado desactivado, luego en una consola de administración activa la función (o la desactiva si descubre que está rota).

Las ramas de características pueden ser parte de una metodología de lanzamiento e integrarse en una cadena de integración continua. Puede desarrollar en una rama de características, implementar la rama en DEV / QA, obtener certificación, fusionar la rama de características con el tronco y luego empujar el tronco a los entornos SIT / UAT / PROD.

Hay pros y contras asociados con este enfoque. La función de alternancia requiere una disciplina muy estricta ya que el código roto / oscuro está llegando a la producción. Esto es ideal para startups y tiendas donde la gerencia sabe cómo llevarlo a cabo y tiene herramientas de automatización del sistema (Chef / Puppet / cfengine, etc.). Google, Facebook, LinkedIn, WordPress se implementan en entornos de producción mediante el cambio de funciones y la automatización del sistema .

Existen algunos requisitos previos para que los técnicos puedan alternar funciones de forma adecuada: entrega / despliegue continuo, integración continua, pruebas unitarias automatizadas, pruebas de integración automatizada, pruebas automatizadas de esfuerzo / rendimiento, automatización del sistema. Si no tiene estos en su lugar, considere una estrategia de lanzamiento más simple (por ejemplo, la función de ramificación).