Download - Tema 1 Control de Versiones

Transcript
Page 1: Tema 1 Control de Versiones

Análisis y Diseño de Software

Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es

Tema 1. Control de versiones

Carlos A. Iglesias <[email protected]>

Page 2: Tema 1 Control de Versiones

Control de versiones 2

Teoría

Ejercicio práctico en el ordenador

Ampliación de conocimientos

Lectura / Vídeo / Podcast

Práctica libre / Experimentación

Leyenda

Page 3: Tema 1 Control de Versiones

Control de versiones 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

Page 4: Tema 1 Control de Versiones

Control de versiones 4

¿Cómo comparten código...?

● Programadores de código abierto

● Distribuidos por todo el mundo

Page 5: Tema 1 Control de Versiones

Control de versiones 5

¿Se mandan el código?

Page 6: Tema 1 Control de Versiones

Control de versiones 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?

Page 7: Tema 1 Control de Versiones

Control de versiones 7

Solución: control de versiones

● Un sistema 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

Page 8: Tema 1 Control de Versiones

Control de versiones 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

Page 9: Tema 1 Control de Versiones

Control de versiones 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

Page 10: Tema 1 Control de Versiones

Control de versiones 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

Page 11: Tema 1 Control de Versiones

Control de versiones 11

Proceso

Page 12: Tema 1 Control de Versiones

Control de versiones 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)

Page 13: Tema 1 Control de Versiones

Control de versiones 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)

Page 14: Tema 1 Control de Versiones

Control de versiones 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