SlideShare una empresa de Scribd logo
1 de 14
Git
Enero, 2015.
¿Qué es Git?
•Sistema de control de versiones completamente distribuido
• Permite el establecimiento de un repositorio central
•Orientado a guardar snapshots en lugar de diferencias entre
archivos
•Construido para garantizar la integridad
•Rápido y tamaño reducido entre sus principales ventajas
Snapshots sobre diferencias entre archivos. Esencial
para branches
SVN
Git
Tamaño
•Git, a comparación de SVN, optimiza el espacio utilizado.
• La carpeta Git cuenta con toda la historia de master, todos los branches
y tags.
• La carpeta SVN únicamente contiene la última revisión del trunk, última
revisión de cada branch y todos los tags.
•Consecuentemente clonar un repositorio, con toda la historia, es
sumamente rápido.
•Por ejemplo:
Workflow definido para Bursatec
Beneficios de Git para el desarrollo (1)
•Facilita y forza las inspecciones, mediante Merge Requests.
• Permite tener inspecciones tempranas con retroalimentación mediante
comentarios
• Inspecciones de integración de cambios
• Puede proteger contra escritura, basada en roles, en master.
•Permite naturalmente la experimentación y creatividad
• Implementar 2 o más posibles soluciones y compararlas es muy
sencillo.
• No afecta al resto de colaboradores.
• El control de versiones se mantiene.
• Es posible trabajar en más de 1 requerimiento a la vez:
• Permite la corrección de un defecto en producción cuando ya se estaba
trabajando en un nuevo requerimiento
• Evita tener múltiples workspaces, 1 para cada branch como se hace en
svn, mediante el cambio (switch) entre branches.
Beneficios de Git para el desarrollo (2)
• Ofrece más herramientas para hacer las integraciones (merge)
más sencillas y confiables
• Cuenta con varios algoritmos para realizar las integraciones.
• En caso de conflicto, es necesario realizar un nuevo commit con la
solución del conflicto. En svn esto puede ser omitido y ocasionar
perdida de información.
• Cada repositorio clonado cuenta con toda la historia. Por lo tanto
hacer un diff o ver todos los cambios de un punto a otro es local y
por ende más rápido.
• Permite una mejor interoperabilidad con CI, CD o Issue
Management
• Mediante la ejecución de la IC antes y después de un merge en master.
• Ejecución de tareas en go.cd o lisa para lograr el despliegue en
desarrollo por ejemplo.
Beneficios de Git para el desarrollo (3)
• Trabajar un requerimiento en colaboración con 2 o más
desarrolladores es posible sin afectar al resto.
• Facilita la comprensión del estado actual e historia de un
proyecto mediante una vista gráfica de los branches y commits.
• Centraliza el código y la documentación de un proyecto en un
solo lugar.
• Mediante el uso de Markdown (Texto plano convertido a HTML)
• Wiki para cada proyecto. Diagramas de arquitectura, guías de
instalación, FAQ pueden ser consultados.
• Facilita la integración temprana de cambios en master.
• A diferencia de integrar al final, como se hace actualmente, el tiempo
de integración y pruebas de regresión se reduce.
• Interface web
• Permite la consulta en línea de código sin descargar el código
localmente, administración, acceso a la documentación, entre otros.
Desventajas de Git
• Curva de aprendizaje
• Es lenta y requiere de experimentación.
• Requiere de un cambio de paradigma al trabajar con branches.
• Herramientas visuales no implementan toda la definición de Git. Esto
provoca que se requiera un mayor uso de la consola/terminal lo cual
puede ser difícil para quienes no están acostumbrada a ella.
• Requiere de un proceso o workflow formal.
• En caso contrario la administración de branches se puede volver
caótico.
• No contar con un flujo de trabajo puede provocar problemas de
despliegue e integración en ambientes de prueba.
Beneficios de Git para áreas ajenas al desarrollo (1)
• Mayor control sobre los proyectos nuevos y existentes
• A diferencia de SVN donde cualquiera puede crear lo que quiera dentro
de una carpeta con permisos
• Permite la administración de grupos
• Ligar usuarios y proyectos a grupos es posible.
• Asignar roles dentro de un grupo también es posible.
• Mejora la seguridad mediante un mejor control de usuarios
• Permite el cambio de contraseñas periódicamente
• Es posible integrar con Active Directory, no permitiendo el acceso a
quien ya no labora en la empresa inmediatamente.
• Es posible desactivar cuentas inactivas por un periodo de tiempo.
Beneficios de Git para áreas ajenas al desarrollo (2)
• Control de versiones (hospedaje) para proyectos de
administración de configuraciones (LLM-CM)
• Documentos como ERS o definiciones de RETO podrían ser colocadas
en Markdown o Wiki, permitiendo la edición en línea.
• Mejor comunicación sobre notificaciones de mantenimiento o
algún otro mensaje mediante mensajes de difusión en el servidor
Git.
Que no hace Git
• No mejora la excelencia técnica pero sí el proceso de desarrollo
• Se requiere trabajar con los desarrolladores para lograr esa excelencia
técnica.
• No garantiza que la deuda técnica se reduzca
• De igual modo, la herramienta o el proceso requiere también de
entrenamiento, cambios culturales, de actitud, pasión por el detalle para
lograrlo.
• Es probable que se reduzca la deuda técnica pero depende de la
calidad de las inspecciones. Depende aún más del profesionalismo,
pragmatismo y orgullo (generado por el producto entregado) de los
desarrolladores.
• No establece un proceso o flujo de trabajo
• Se requiere de capacitar y dar seguimiento, al menos en la etapa de
migración.
• En caso contrario, pasaría lo que ocurrió con el proyecto sitiobmv en su
migración hacia Git.
Siguientes acciones
• Impulsar integraciones continuas y prontas.
• Comenzar a realizar ingeniería de requerimientos
• Indicar a control de cambios el nuevo proceso de liberación
• Realizar y ejecutar un plan para la transformación del personal
de Bursatec para convertirlos en profesionales del software.
• Implementar, ya sea con lisa o con go.cd, la primera versión de
entregas continuas (Continuous Delivery)
• Formalizar los checklist utilizados durante los Merge Request
• Establecer los lineamientos de documentación de un proyecto
• Establecer los lineamientos de pruebas unitarias
• Medir la efectividad de las medidas aplicadas. Deuda técnica,
tamaño, tiempo, etc.
• Ligar a Git herramientas para mejorar la seguridad del código,
como Fortify, Peach Fuzzer.
• Capacitar a infraestructura para el mantenimiento a Git.
Gracias

Más contenido relacionado

La actualidad más candente

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 
24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server
24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server
24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL ServerJohn Bulla
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonCarlos Azaustre
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y GithubJavier Novoa Cataño
 
Biicode en la Hackers Week
Biicode en la  Hackers WeekBiicode en la  Hackers Week
Biicode en la Hackers WeekJulia S. Simon
 
Jenkins Pipeline - Seville JAM
Jenkins Pipeline - Seville JAMJenkins Pipeline - Seville JAM
Jenkins Pipeline - Seville JAMamunizmartin
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitSergio Rus
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015Micael Gallego
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 Micael Gallego
 

La actualidad más candente (15)

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server
24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server
24 Horas Español 2014 - ALM para el desarrollo de base de datos SQL Server
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
 
Web Day Devops - Plain Concepts
Web Day Devops - Plain ConceptsWeb Day Devops - Plain Concepts
Web Day Devops - Plain Concepts
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 
Biicode en la Hackers Week
Biicode en la  Hackers WeekBiicode en la  Hackers Week
Biicode en la Hackers Week
 
Jenkins Pipeline - Seville JAM
Jenkins Pipeline - Seville JAMJenkins Pipeline - Seville JAM
Jenkins Pipeline - Seville JAM
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
 
Git & GitHub Part I
Git & GitHub Part IGit & GitHub Part I
Git & GitHub Part I
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Taller GitHub
Taller GitHubTaller GitHub
Taller GitHub
 

Similar a Git: Sistema de control de versiones distribuido y orientado a snapshots

¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?Gerónimo Di Pierro
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADDIEGOALBERTOENRIQUEZ4
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptxssuser3ff40a
 
Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Virginia Polcan
 
Semana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionSemana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionGiovani Ramirez
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosyuri460292
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Datannakasone
 
Dynamics saturday madrid 2019 fs
Dynamics saturday madrid 2019   fsDynamics saturday madrid 2019   fs
Dynamics saturday madrid 2019 fsDemian Raschkovan
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesAngel Armenta
 
Introduccion_a_la_integracion_de_aplicaciones.ppt
Introduccion_a_la_integracion_de_aplicaciones.pptIntroduccion_a_la_integracion_de_aplicaciones.ppt
Introduccion_a_la_integracion_de_aplicaciones.pptIvonneRomero42
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativojorge paez
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013Rodolfo Finochietti
 

Similar a Git: Sistema de control de versiones distribuido y orientado a snapshots (20)

¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptx
 
Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2
 
Semana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestionSemana 4 control de versiones planificacion y gestion
Semana 4 control de versiones planificacion y gestion
 
Ciclo devida
Ciclo devidaCiclo devida
Ciclo devida
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionados
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Data
 
Definición repositorio de archivos
Definición repositorio de archivosDefinición repositorio de archivos
Definición repositorio de archivos
 
Capítulos 8,9 y 10
Capítulos 8,9 y 10Capítulos 8,9 y 10
Capítulos 8,9 y 10
 
ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
Dynamics saturday madrid 2019 fs
Dynamics saturday madrid 2019   fsDynamics saturday madrid 2019   fs
Dynamics saturday madrid 2019 fs
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versiones
 
Introduccion_a_la_integracion_de_aplicaciones.ppt
Introduccion_a_la_integracion_de_aplicaciones.pptIntroduccion_a_la_integracion_de_aplicaciones.ppt
Introduccion_a_la_integracion_de_aplicaciones.ppt
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Git windows
Git windowsGit windows
Git windows
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 

Git: Sistema de control de versiones distribuido y orientado a snapshots

  • 2. ¿Qué es Git? •Sistema de control de versiones completamente distribuido • Permite el establecimiento de un repositorio central •Orientado a guardar snapshots en lugar de diferencias entre archivos •Construido para garantizar la integridad •Rápido y tamaño reducido entre sus principales ventajas
  • 3. Snapshots sobre diferencias entre archivos. Esencial para branches SVN Git
  • 4. Tamaño •Git, a comparación de SVN, optimiza el espacio utilizado. • La carpeta Git cuenta con toda la historia de master, todos los branches y tags. • La carpeta SVN únicamente contiene la última revisión del trunk, última revisión de cada branch y todos los tags. •Consecuentemente clonar un repositorio, con toda la historia, es sumamente rápido. •Por ejemplo:
  • 6. Beneficios de Git para el desarrollo (1) •Facilita y forza las inspecciones, mediante Merge Requests. • Permite tener inspecciones tempranas con retroalimentación mediante comentarios • Inspecciones de integración de cambios • Puede proteger contra escritura, basada en roles, en master. •Permite naturalmente la experimentación y creatividad • Implementar 2 o más posibles soluciones y compararlas es muy sencillo. • No afecta al resto de colaboradores. • El control de versiones se mantiene. • Es posible trabajar en más de 1 requerimiento a la vez: • Permite la corrección de un defecto en producción cuando ya se estaba trabajando en un nuevo requerimiento • Evita tener múltiples workspaces, 1 para cada branch como se hace en svn, mediante el cambio (switch) entre branches.
  • 7. Beneficios de Git para el desarrollo (2) • Ofrece más herramientas para hacer las integraciones (merge) más sencillas y confiables • Cuenta con varios algoritmos para realizar las integraciones. • En caso de conflicto, es necesario realizar un nuevo commit con la solución del conflicto. En svn esto puede ser omitido y ocasionar perdida de información. • Cada repositorio clonado cuenta con toda la historia. Por lo tanto hacer un diff o ver todos los cambios de un punto a otro es local y por ende más rápido. • Permite una mejor interoperabilidad con CI, CD o Issue Management • Mediante la ejecución de la IC antes y después de un merge en master. • Ejecución de tareas en go.cd o lisa para lograr el despliegue en desarrollo por ejemplo.
  • 8. Beneficios de Git para el desarrollo (3) • Trabajar un requerimiento en colaboración con 2 o más desarrolladores es posible sin afectar al resto. • Facilita la comprensión del estado actual e historia de un proyecto mediante una vista gráfica de los branches y commits. • Centraliza el código y la documentación de un proyecto en un solo lugar. • Mediante el uso de Markdown (Texto plano convertido a HTML) • Wiki para cada proyecto. Diagramas de arquitectura, guías de instalación, FAQ pueden ser consultados. • Facilita la integración temprana de cambios en master. • A diferencia de integrar al final, como se hace actualmente, el tiempo de integración y pruebas de regresión se reduce. • Interface web • Permite la consulta en línea de código sin descargar el código localmente, administración, acceso a la documentación, entre otros.
  • 9. Desventajas de Git • Curva de aprendizaje • Es lenta y requiere de experimentación. • Requiere de un cambio de paradigma al trabajar con branches. • Herramientas visuales no implementan toda la definición de Git. Esto provoca que se requiera un mayor uso de la consola/terminal lo cual puede ser difícil para quienes no están acostumbrada a ella. • Requiere de un proceso o workflow formal. • En caso contrario la administración de branches se puede volver caótico. • No contar con un flujo de trabajo puede provocar problemas de despliegue e integración en ambientes de prueba.
  • 10. Beneficios de Git para áreas ajenas al desarrollo (1) • Mayor control sobre los proyectos nuevos y existentes • A diferencia de SVN donde cualquiera puede crear lo que quiera dentro de una carpeta con permisos • Permite la administración de grupos • Ligar usuarios y proyectos a grupos es posible. • Asignar roles dentro de un grupo también es posible. • Mejora la seguridad mediante un mejor control de usuarios • Permite el cambio de contraseñas periódicamente • Es posible integrar con Active Directory, no permitiendo el acceso a quien ya no labora en la empresa inmediatamente. • Es posible desactivar cuentas inactivas por un periodo de tiempo.
  • 11. Beneficios de Git para áreas ajenas al desarrollo (2) • Control de versiones (hospedaje) para proyectos de administración de configuraciones (LLM-CM) • Documentos como ERS o definiciones de RETO podrían ser colocadas en Markdown o Wiki, permitiendo la edición en línea. • Mejor comunicación sobre notificaciones de mantenimiento o algún otro mensaje mediante mensajes de difusión en el servidor Git.
  • 12. Que no hace Git • No mejora la excelencia técnica pero sí el proceso de desarrollo • Se requiere trabajar con los desarrolladores para lograr esa excelencia técnica. • No garantiza que la deuda técnica se reduzca • De igual modo, la herramienta o el proceso requiere también de entrenamiento, cambios culturales, de actitud, pasión por el detalle para lograrlo. • Es probable que se reduzca la deuda técnica pero depende de la calidad de las inspecciones. Depende aún más del profesionalismo, pragmatismo y orgullo (generado por el producto entregado) de los desarrolladores. • No establece un proceso o flujo de trabajo • Se requiere de capacitar y dar seguimiento, al menos en la etapa de migración. • En caso contrario, pasaría lo que ocurrió con el proyecto sitiobmv en su migración hacia Git.
  • 13. Siguientes acciones • Impulsar integraciones continuas y prontas. • Comenzar a realizar ingeniería de requerimientos • Indicar a control de cambios el nuevo proceso de liberación • Realizar y ejecutar un plan para la transformación del personal de Bursatec para convertirlos en profesionales del software. • Implementar, ya sea con lisa o con go.cd, la primera versión de entregas continuas (Continuous Delivery) • Formalizar los checklist utilizados durante los Merge Request • Establecer los lineamientos de documentación de un proyecto • Establecer los lineamientos de pruebas unitarias • Medir la efectividad de las medidas aplicadas. Deuda técnica, tamaño, tiempo, etc. • Ligar a Git herramientas para mejorar la seguridad del código, como Fortify, Peach Fuzzer. • Capacitar a infraestructura para el mantenimiento a Git.