Estrategias de Control de Versiones

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 23

Desarrollo de

Software
Estrategias de Control de Versiones
Agenda
▪ Qué son CVS?
▪ Cómo funcionan?
▪ Mejores Prácticas.
▪ Estrategias de Control de Versiones.
▪ Integración Continua.
Que son CVS?
Un sistema de control de versiones sirve para:
▪ Facilitar el trabajo simultáneo en un mismo proyecto.
▪ Permite a una persona usar múltiples computadoras para trabajar en un proyecto, por
lo que es valioso incluso si está trabajando solo.
▪ El control de versiones integra el trabajo realizado simultáneamente por diferentes
miembros del equipo.
▪ El control de versiones da acceso a versiones históricas de su proyecto.
▪ Puede deshacer ediciones específicas sin perder todo el trabajo
▪ Para cualquier archivo o parte de un archivo, se puede determinar cuándo, por qué y
quién lo editó.
Evolución
Tipos de Control de Versiones
Centralizados Distribuidos

▪ Cada usuario obtiene su propia ▪ Cada usuario obtiene su propio


copia de trabajo, pero solo hay un repositorio y copia de trabajo
repositorio central.
Cómo funciona?
• Es muy importante entender cómo funciona ya que de está forma haremos un uso adecuado
de las herramientas según su tipo.

Centralizados

Distribuidos
Cómo funciona?
• Casi todas las operaciones son locales.

• La integridad de los datos es fundamental, por ello todas las operaciones son confirmadas
con un checksum, esto quiere decir que es imposible realizar algún cambio y que el
controlador de versiones no lo detecte. Esto garantiza que no exista la posibilidad de perder
información o corrupción de la información sin que el controlador de versiones lo detecte.
Cómo funciona?
• Tiene tres estados principales en los que se pueden encontrar tus archivos:
• confirmado (committed) - los datos están almacenados de manera segura en la base de
datos local.
• modificado (modified) - archivo modificado pero todavía no confirmado en la base de
datos.
• preparado (staged) - archivo marcado como modificado en la versión actual para que
vaya en la próxima confirmación
Mejores Prácticas
▪ Updates - Siempre haz update antes de hacer cualquier cambio.
▪ Commits – Nunca hagas commit de trabajos sin terminar.
▪ Comentarios – Todos los commit deben tener un comentario de valor.
▪ Estructura de un proyecto en SCV – El repositorio debe tener todo lo necesario
para que tu proyecto funcione
▪ Conflictos – Analízalos con calma y una vez resueltos comenta el código que
cambio por el conflicto.
Estrategias de control de versiones
Las estrategias de control de versiones (branching) son un conjunto de reglas y
convenciones que estipulan:
▪ Cuando un desarrollador debería ramificar.
▪ De qué rama deberían ramificar
▪ Cuando deberían fusionar
▪ ¿Y a qué rama deberían fusionar?
Estrategias de control de versiones
Para escoger la estrategia de control de versiones adecuada debemos tomar en
cuenta:
▪ Empresa
▪ Proyecto
▪ Equipo
▪ Despliegue
Estrategia Mainline Branch
Solo hay una rama eterna y canónica:
el maestro .
Para la mayoría de los propósitos, la rama
maestra se considera estable . En otras
palabras, si revisa la rama maestra, puede
esperar que:
▪ Se basa en todas las plataformas / objetivos
compatibles.
▪ Todas las pruebas unitarias pasan.
▪ Una "ejecución estándar" del software funciona
(por ejemplo, si se trata de una aplicación GUI,
debería poder iniciarla y realizar algunas
operaciones básicas).

Sin embargo, la rama maestra podría no pasar


una prueba de control de calidad integral en todo
momento.
Estrategia Branch Per Feature Deployment
Todo el desarrollo se realiza en ramas
de características dedicadas
(relativamente de corta duración). Aquí
es donde tiene lugar la mayor parte de la
acción, que incluye:
▪ Desarrollo de características.
▪ Revisión de código.
▪ Pruebas de integración.

Una rama de características se ramifica


desde la maestra, y una vez que se
completa el desarrollo y se han cumplido
todos los criterios de integración, se
fusiona de nuevo con la rama maestra.
Estrategia Enviroment Based Branching
▪ Se basa en los entornos en los
que se implementa la aplicación.
▪ Todas las confirmaciones se
realizan en una rama de
características y se fusionan en el
entorno que desea implementar.
▪ La aprobación y fusión de la
solicitud de extracción
desencadena una
implementación automática en
producción.
Estrategia GitFlow

En esencia, el modelo de desarrollo está


muy inspirado en los modelos existentes. El
repositorio central tiene dos ramas
principales con una vida infinita:
▪ master
▪ Develop

Junto a las ramas principales master y


develop, utiliza una variedad de ramas de
soporte para ayudar al desarrollo paralelo
entre los miembros del equipo.
Ejemplo
Develop
git checkout origin develop

git checkout -b feature/USR-001

git commit -m “feat[#USR-001]: Agregando crear usuario”

git push origin feature/USR-001

git commit --ammend <-> git commit --amend -m "Actualizando mensaje"

git push origin feature/USR-001 --force

creamos pull request

Develop

git rebase --onto develop feature/USR-001


resolvemos los conflictos (si existen)
git rebase --continue ó git rebase --abort

git push origin feature/USR-001 --force


Sistemas de Integración Continua
Qué es Integración Continua?
Es una práctica en donde los desarrolladores combinan los cambios con el
repositorio central de forma periódica, en donde se ejecutan versiones y pruebas.
Por qué Integración Continua?

▪ Para evitar los problemas de integración que existen o existirían si nuestros


procesos de integración son ejecutados al final de la línea de tiempo del
desarrollo.
Sistemas de Integración Continua
Los sistemas de integración continua son herramientas que permiten la automatización del
control sobre la integración continua.
Algunas de ellas son:
▪ Jenkins
▪ Solano CI,
▪ Bamboo
▪ Pipeline
▪ Apache Continuum
▪ Team Foundation Build
▪ GCP
▪ GitLab
Sistema de Integración Continua
Ventajas Desventajas

▪ Automatización de despliegue. ▪ Si nadie en su equipo ha trabajado


con ellos antes, puede ser difícil
▪ Las pruebas automatizadas. adaptarse.
▪ Análisis estático. ▪ La compilación también puede
dañarse en el servidor y no
▪ Siempre sabemos la verdad. localmente, lo que crea una gran
frustración para algunos.
▪ El mantenimiento que requiere el
servidor de integración continua.
Jenkins

El servidor de Integración continua de código abierto de Jenkins es:


▪ Fácil de instalar
▪ Fácil de usar
▪ Tecnología múltiple
▪ Multiplataforma
▪ Ampliamente utilizado
▪ Extensible
▪ Gratis
Jenkins para Desarrolladores
▪ Fácil de instalar
▪ Fácil de usar
▪ Tecnología múltiple
▪ C, Java, C, Python, Perl, SQL, Angular, .Net, etc.
▪ Prueba con Junit, Nunit, MSTest, etc.
Gracias

También podría gustarte