Está en la página 1de 14

Anlisis y Diseo de Software

Tema 1. Control de versiones


Carlos A. Iglesias <cif@gsi.dit.upm.es>
Departamento de Ingeniera de Sistemas Telemticos http://moodle.dit.upm.es

G21

Legenda
Teora

Ejercicio prctico en el ordenador

Ampliacin de conocimientos

Lectura / Vdeo / Podcast

Prctica libre / Experimentacin

Control de versiones

Cmo comparten cdigo...?

En una empresa cientos de programadores programando a la vez el mismo programa Distribuidos por oficinas en todo el mundo
Control de versiones 3

Cmo comparten cdigo...?


Programadores de cdigo abierto Distribuidos por todo el mundo

Control de versiones

Se mandan el cdigo?

Control de versiones

Ms problemas

Qu pasa si dos personas han cambiado el mismo cdigo?cmo 'lo mezclan? Cmo te enteras de si alguien ha cambiado algo si estn mil personas trabajando?
Control de versiones 6

Solucin: control de versiones

Un sistema que gestiona un repositorio de cdigo (remoto) donde los usuarios pueden

Descargar el cdigo del repositorio en su ordenador (checkout) Modificar el cdigo en local, crear nuevos ficheros, y aadirlos al repositorio (commit) Si al aadir cdigo hay conflictos (con otro usuario), el gestor combina el cdigo si puede Cada vez que hacemos commit, se crea una versin, y podemos 'recuperar' versiones anteriores Podemos tener varias 'ramas', p.ej. para una versin y la siguiente, y combinarlas

Control de versiones

Sistemas de Control de Versiones

Centralizados

Un repositorio central CVS, Subversion (SVN) Servidor 'con ms autoridad' por convenio Cada 'checkout' es un repositorio Mercurial BitKeeper Bazaar
Control de versiones 8

Distribuidos

Git

2005, Desarrollado por Linus Torvald para el kernel de Linux Segn 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 / aadir el cdigo se aade a 'staging' / index Al confirmar los cambios los aadimos 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, aadimos ficheros y los aadimos a git (los tenemos tambin 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 cdigo, etc.) Lo vamos a utilizar para guardar el cdigo proporcionado en las prcticas (en direccin asignatura alumnos)

Control de versiones

13

Resumen
Es importante aprender a usar un sistema de control de versiones Olvdate de 'numerar las versiones de un programa' (p.java, p1.java, ) es ms rpido usar control de versiones Muy bien integrado en IDEs

Control de versiones

14