Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
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