Gestión de la Configuración Del Software (SCM)

Post on 11-Jan-2022

4 views 0 download

Transcript of Gestión de la Configuración Del Software (SCM)

Gestión de la ConfiguraciónDel Software (SCM)

Taller de Programación 2021

Agenda

- SCM- Herramientas SCM- GIT

Software Configuration Management (SCM)- Configuración del Software:

- Conjunto de elementos de configuración que conforman el software en un momento dado.

- Controlar los cambios sobre archivos (del desarrollo)

- Mantener un correcto versionado de nuestro sistema (durante la construcción).

Herramientas SCM

Permiten:- Múltiples desarrolladores modificando el mismo código- Automatizar las actualizaciones entre

versiones- Acceder a cualquier estado previo del código

Herramientas SCM

Previenen:- Sobreescribir código- Pérdidas de Trabajo por falta de respaldos

No sustituye la necesidad de gestionar la comunicación entre desarrolladores

Herramientas SCM

Conceptos Principales:- Versión Principal (tronco) y ramas (branchs)- Versiones simbólicas (tags)- Gestionado: check out, commit, diff, merge

(de archivos y ramificaciones)

Herramientas SCM

Versión Principal y Ramas

Herramientas SCM

Podría volver al tronco incluyendo cambios de un Branch con un MergeLa versión 1.5 incluye el commit 1.2.4.2

Herramientas SCMGestionado: Poner un archivo bajo configuración en la herramientaCheck Out: obtener versión del SW (tronco, Branch, tag, archivo, etc.)Commit: confirmar cambios en el SW- Éxito : genera una nueva versión- Conflicto: hay que analizar los cambios(desarrollador) y hacer un Merge

Herramientas SCM

Diff : Permite ver los cambios entre versiones del SW (archivos, versión, etc.)Merge: unir los cambios en una versión

Las herramientas indican conflictos (ej. Diferente código en la misma línea), el desarrollador debe definir el merge (eligiendo qué queda y qué elimina).

Herramienta SCM

Distintas Opciones:- Repositorios Centralizados - SVN - Repositorios Distribuidos – GIT

Los conceptos vistos aplican (mayormente) a todas (cada una tiene su implementación).

Centralizado vs Distribuido

CentralizadoHay un solo servidor que guarda todas las versiones.Todos saben que está haciendo cada uno encada momento.Único punto de falla.

Centralizado vs Distribuido

DistribuidoVarias copias en cada usuarioCada clone del repositorio es un backup de todos los datosNo hay un único punto de fallaMás difícil saber en quéestá trabajando cada integrante.

¿Qué es GIT?

- Repositorio Distribuido para gestionar el control de cambios y versiones del software

- Repositorio:- Almacena todos los archivos del SW puestos

bajo configuración y su historia- Puede ser Local o Remoto

GIT

Estado de los Archivos:- Commiteados, Modificados y Preparados (Staged)

Workflow:- Modificar archivos, - Preparar archivos

- Commit de archivos preparados, almacenando un snapshotde los archivos en el directorio GIT

GIT: Estado de Archivos

GIT- Configurar Identidad

- eGIT

GIT

- Clonar Repositorio

- Crea una copia localdel repositorio remoto

Ej. eGIT

GITLos archivos pueden estar Trackeados o No Trackeados. - Trackeados: archivos incluidos en el último snapshot. Pueden estar sin modificar, modificados o preparados.- No Trackeados: el resto.Realizar las transiciones de estado para los archivos implica la ejecución de comandos GIT

GIT

GITBranches- Línea separada de código con su propia

historia- Es un puntero a un Commit- El Branch principal y por defecto es Master- Las funcionalidades se deben desarrollar en

un Branch y después incorporarlas al Master

GIT

Branches

GIT

Branches

Se realizan dos commits y esa es la estructuradel árbol

GIT

Branches

Se crea un branch "funcionalidad"

GIT

Branches

GIT

Branches - Merge

GIT

Branches – Merge sin conflicto

GIT

Branches – Merge sin conflicto

• Se puede eliminar el branch

GIT

Branches – MergeSe creó otro Branch desde el commit 3Los commits 6 y 7 realizan modificaciones en los mismos archivos que los commits 4 y 5

GIT

Branches - Merge

GIT

Branches – Merge – Con Conflicto

• Analizar el conflicto con herramienta adecuada

GIT

Ej. eGIT

GIT

Branches – Merge – con conflicto

• Resolver el conflicto y realizar el commit con loscambios a conservar

GIT

Branches – Merge – con conflicto

•Se puede eliminar el branch

GIT - Tags

Tags

•Sirven para marcar puntos en la historia

GIT - Tags

• Para hacerla visible al resto hay que compartirla

GIT

GitLab y GitHub son manejadores web de repositorios git.GitLab es la instalación central de Git en la Facultad de Ingeniería - https://gitlab.fing.edu.uy/Se debe configurar una clave pública para acceder vía ssh, se puede acceder via https.GitHub ofrece una herramienta gratuita para aprender a usar git (https://try.github.io/)

Referencias

GIT - https://git-scm.com/documentation

Pro GIT Book - https://git-scm.com/book/es/v2

eGIT User Guide -https://wiki.eclipse.org/EGit/User_Guide