SlideShare a Scribd company logo
1 of 14
Download to read offline
Análisis y Diseño
      de Software


Tema 1. Control de versiones

Carlos A. Iglesias <cif@gsi.dit.upm.es>

Departamento de Ingeniería de Sistemas Telemáticos
                            http://moodle.dit.upm.es
Leyenda
Teoría


Ejercicio práctico en el ordenador


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                     Control de versiones   2
¿Cómo comparten código...?
●   En una empresa
    cientos de
    programadores
    programando a la
    vez el mismo
    programa
●   Distribuidos por
    oficinas en todo el
    mundo
                          Control de versiones   3
¿Cómo comparten código...?
●   Programadores de
    código abierto
●    Distribuidos por
    todo el mundo




                        Control de versiones   4
¿Se mandan el código?




           Control de versiones   5
Más problemas
●   ¿Qué pasa si dos
    personas han
    cambiado el mismo
    código?¿cómo 'lo
    mezclan?
●    ¿Cómo te enteras de
    si alguien ha
    cambiado algo si
    están mil personas
    trabajando?
                           Control de versiones   6
Solución: control de
                  versiones
● Unsistema que gestiona un repositorio de
 código (remoto) donde los usuarios pueden
  –   Descargar el código del repositorio en su
      ordenador (checkout)
  –   Modificar el código en local, crear nuevos ficheros,
      y añadirlos al repositorio (commit)
  –   Si al añadir código hay conflictos (con otro
      usuario), el gestor combina el código si puede
  –   Cada vez que hacemos commit, se crea una
      versión, y podemos 'recuperar' versiones anteriores
  –   Podemos tener varias 'ramas', p.ej. para una
      versión y la siguiente, y combinarlas




                                             Control de versiones   7
Sistemas de Control de
             Versiones
● Centralizados
  –   Un repositorio central
  –   CVS, Subversion (SVN)
● Distribuidos
  –   Servidor 'con más autoridad' por convenio
  –   Cada 'checkout' es un repositorio
  –   Mercurial
  –   BitKeeper
  –   Bazaar
                                Control de versiones   8
Git
● 2005,Desarrollado por
 Linus Torvald para el
 kernel de Linux
● Según Linus, no es un
 sistema de control de
 versiones, sino un
 sistema de ficheros
 orientado a objeto
 versionable... pero se usa
 como control de versiones


                                Control de versiones   9
Git
●   Cada repositorio es completo (nos
    bajamos todos los ficheros)
●   Nos bajamos 'clonamos' un repositorio
    –   Al modificar / editar / añadir el código se añade
        a 'staging' / index
    –   Al confirmar los cambios los añadimos al
        repositorio
●   Git usa 'fotos' del repositorio

                                 Control de versiones       10
Proceso




    Control de versiones   11
Proceso
●    Clonamos un repositorio o
    iniciamos uno
    –   Los tenemos en el 'working
        directory'
● Editamos, añadimos ficheros y
 los añadimos a git (los tenemos
 también en index)
● Decidimos confirmar los
 cambios (commit) → pasan al
 repositorio (HEAD)
                                Control de versiones   12
Github
●   Es una forja para almacenar proyectos
●   Tiene componente social (seguir amigos,
    compartir código, etc.)
●   Lo vamos a utilizar para guardar el código
    proporcionado en las prácticas (en
    dirección asignatura → alumnos)



                           Control de versiones   13
Resumen
●   Es importante aprender a usar un sistema
    de control de versiones
●    Olvídate de 'numerar las versiones de un
    programa' (p.java, p1.java, …) → es más
    rápido usar control de versiones
●   Muy bien integrado en IDEs



                           Control de versiones   14

More Related Content

What's hot

Conceptos Basicos De Sistemas Operativos
Conceptos Basicos De Sistemas OperativosConceptos Basicos De Sistemas Operativos
Conceptos Basicos De Sistemas Operativos
DBSEII
 

What's hot (20)

Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Taller GitHub
Taller GitHubTaller GitHub
Taller GitHub
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
Versionamiento
VersionamientoVersionamiento
Versionamiento
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
Control de versiones con GIT
Control de versiones con GITControl de versiones con GIT
Control de versiones con GIT
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
Tarea4 Juan Martinez Conceptos Basicos De Sistemas Operativos
Tarea4 Juan Martinez Conceptos Basicos De Sistemas OperativosTarea4 Juan Martinez Conceptos Basicos De Sistemas Operativos
Tarea4 Juan Martinez Conceptos Basicos De Sistemas Operativos
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
Conceptos Basicos De Sistemas Operativos
Conceptos Basicos De Sistemas OperativosConceptos Basicos De Sistemas Operativos
Conceptos Basicos De Sistemas Operativos
 
A Strategy for Container Lifecycle Management
A Strategy for Container Lifecycle ManagementA Strategy for Container Lifecycle Management
A Strategy for Container Lifecycle Management
 
Versionamiento de software
Versionamiento de softwareVersionamiento de software
Versionamiento de software
 
Linux containers
Linux containersLinux containers
Linux containers
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gitters
 

Similar to Tema 1 Control de Versiones

[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones
Eudris Cabrera
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
Gastón Guillerón
 

Similar to Tema 1 Control de Versiones (20)

[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones
 
U1 Control de versiones.pdf
U1 Control de versiones.pdfU1 Control de versiones.pdf
U1 Control de versiones.pdf
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Control de Versiones con Subversion (SVN)
Control de Versiones con Subversion (SVN)Control de Versiones con Subversion (SVN)
Control de Versiones con Subversion (SVN)
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git y Github basico.pptx
Git y Github basico.pptxGit y Github basico.pptx
Git y Github basico.pptx
 
S14-DAW-2022S1.pptx
S14-DAW-2022S1.pptxS14-DAW-2022S1.pptx
S14-DAW-2022S1.pptx
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptx
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 
Guia01 control versiones
Guia01 control versionesGuia01 control versiones
Guia01 control versiones
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Sistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoSistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de Código
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
 

More from Carlos A. Iglesias

Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
Carlos A. Iglesias
 

More from Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Recently uploaded (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Tema 1 Control de Versiones

  • 1. Análisis y Diseño de Software Tema 1. Control de versiones Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  • 2. Leyenda Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Control de versiones 2
  • 3. ¿Cómo comparten código...? ● En una empresa cientos de programadores programando a la vez el mismo programa ● Distribuidos por oficinas en todo el mundo Control de versiones 3
  • 4. ¿Cómo comparten código...? ● Programadores de código abierto ● Distribuidos por todo el mundo Control de versiones 4
  • 5. ¿Se mandan el código? Control de versiones 5
  • 6. Más problemas ● ¿Qué pasa si dos personas han cambiado el mismo código?¿cómo 'lo mezclan? ● ¿Cómo te enteras de si alguien ha cambiado algo si están mil personas trabajando? Control de versiones 6
  • 7. Solución: control de versiones ● Unsistema que gestiona un repositorio de código (remoto) donde los usuarios pueden – Descargar el código del repositorio en su ordenador (checkout) – Modificar el código en local, crear nuevos ficheros, y añadirlos al repositorio (commit) – Si al añadir código hay conflictos (con otro usuario), el gestor combina el código si puede – Cada vez que hacemos commit, se crea una versión, y podemos 'recuperar' versiones anteriores – Podemos tener varias 'ramas', p.ej. para una versión y la siguiente, y combinarlas Control de versiones 7
  • 8. Sistemas de Control de Versiones ● Centralizados – Un repositorio central – CVS, Subversion (SVN) ● Distribuidos – Servidor 'con más autoridad' por convenio – Cada 'checkout' es un repositorio – Mercurial – BitKeeper – Bazaar Control de versiones 8
  • 9. Git ● 2005,Desarrollado por Linus Torvald para el kernel de Linux ● Según Linus, no es un sistema de control de versiones, sino un sistema de ficheros orientado a objeto versionable... pero se usa como control de versiones Control de versiones 9
  • 10. Git ● Cada repositorio es completo (nos bajamos todos los ficheros) ● Nos bajamos 'clonamos' un repositorio – Al modificar / editar / añadir el código se añade a 'staging' / index – Al confirmar los cambios los añadimos al repositorio ● Git usa 'fotos' del repositorio Control de versiones 10
  • 11. Proceso Control de versiones 11
  • 12. Proceso ● Clonamos un repositorio o iniciamos uno – Los tenemos en el 'working directory' ● Editamos, añadimos ficheros y los añadimos a git (los tenemos también en index) ● Decidimos confirmar los cambios (commit) → pasan al repositorio (HEAD) Control de versiones 12
  • 13. Github ● Es una forja para almacenar proyectos ● Tiene componente social (seguir amigos, compartir código, etc.) ● Lo vamos a utilizar para guardar el código proporcionado en las prácticas (en dirección asignatura → alumnos) Control de versiones 13
  • 14. Resumen ● Es importante aprender a usar un sistema de control de versiones ● Olvídate de 'numerar las versiones de un programa' (p.java, p1.java, …) → es más rápido usar control de versiones ● Muy bien integrado en IDEs Control de versiones 14