Você está na página 1de 22

Introduccin a Git

La vida sin control de versiones


Cmo funciona el control de versiones
Por qu Git

Introduccin a Git
VCS

Version Control System permite a todos los


desarrolladores y diseadores a trabajar en el mismo
cdigo base
No teniendo que estar atentos a todo lo que cambian los
dems and going insane for that reason
Su nombre significa que puedes controlar todas las
diferentes versiones sobre las que ests trabajando
Tambin es llamado Source Control System

La vida sin control de versiones


Programadores cowboys

Existen programadores cowboys llamados as

porque eligen trabajar sin prestar atencin a


las mejores prcticas de programacin
aceptadas
Imaginemos uno de estos programadores que estn
desarrollando un app para un cliente
Empezara programando la estructura bsica del
proyecto para servir de plantilla antes de saber que
quiere el cliente
Nuestro cowboy trabajara varios das creando nuevos
ficheros y haciendo modificaciones en otros para una
nueva funcionalidad super chula

La vida sin control de versiones


Programadores cowboys

Al enviar esta funcionalidad el cliente la rechaza y

nuestro cowboy borra el cdigo y contina trabajando


Unos das despus el cliente ha cambiado de opinin y
acepta esta funcionalidad
Nuestro cowboy tendr que reescribir todo el cdigo o
buscar entre sus correos y backups la funcionalidad

La vida sin control de versiones


Programadores cowboys

Adems un proyecto por ejemplo Android tiene multitud


de ficheros xml, java, imgenes es muy complicado
restaurar un proyecto antiguo
Otra opcin sera tener copias de seguridad de todo el
proyecto, pero necesitara muchsimo espacio
En caso de trabajar en un equipo, tendran que
comparar lnea a lnea los cambios
Esto solo funcionar mientras nuestro cowboy trabaje
solo

La vida sin control de versiones


Programadores cowboys

Si nuestro programador cowboy hubiera utilizado CVS


podra guardar una copia de cada fichero guardado
De esta manera tendr una serie de versiones de su
app, 0.1, 0.2, 0.3 etc.
Cada una de estas tendr una descripcin de los
cambios y funcionalidades aadidas
Solo se guardarn los archivos modificados
Es muy fcil compartir cdigo y probarlo en diferentes
ramas sin interferir a los demas

Test

Cual de los siguientes caractersticas pertenece a un


sistema de control de versiones?
a. Solo instala diferentes versiones de herramientas y
frameworks, como Java o Objetive C
b. Ayuda a enfocarse en la parte ms importante de
una tarea a mano
c. Monitoriza la calidad de tu cdigo y te dice cuando
no ests siguiendo las mejores prcticas
d. Hace muy fcil colaborar con otras personas en un
proyecto.

Test

Un programador Cowboy mantiene su propio sistema de


control de versiones. por qu es una mala idea?
a. Ocupa una gran cantidad de espacio, necesita un
gran esfuerzo de tiempo y es muy difcil de compartir
con otras personas que trabaja con los mismos
ficheros.
b. No ayuda a instalar diferentes versiones de
frameworks que esta utilizando permitindole
cambiar fcilmente entre ellas
c. El cliente no sabr nada sobre el proyecto, har ms
lento el sistema y ser dificil arreglar los datos

Test

Un programador Cowboy no puede tener acceso al


historial de su proyecto para recuperar algo que borr.
porqu es una buena idea tener acceso al historial de
tus cambios?
a. Es importante tener acceso al historial de tu proyecto
para que puedas hacer una idea de cuanto cobrar al
cliente
b. Es importante tener acceso al historial de tu proyecto
para determinar que necesitars despus
c. Es importante tener acceso al historial de tu proyecto
para poder revisar cambios si est confundido con
cdigo ms antiguo.
d. Todas son correctas

Test

Qu hace difcil trabajar con gente que no usa un


control de versiones?
a. No es dificil, solo necesita un extra de coordinacin
b. Si un control de versiones, es difcil unir cambios
entre ficheros que han tocado diferentes personas.
c. Sin un control de versiones, no sabemos quienes
estn trabajando en el proyecto
d. Sin un control de versiones no hay una buena
manera de verificar si est bien escrito el cdigo de
nuestros colegas

Test

Un sistema de control de versiones mantiene un


detallado historial con todos los cambios que has
realizado en tus proyectos
a. Verdadero
b. Falso

Cmo funciona el control de versiones

Un repositorio es una coleccin de todas las versiones


de un proyecto junto a ms informacin
Un repositorio nos da informacin sobre el orden en el
que ocurrieron los cambios, una descripcin de cada
cambio y quin lo realiz

Cada proyecto debera tener su propio repositorio

Cmo funciona el control de versiones

Existen tareas que pueden demorarse varios das o


semanas, por lo que hasta que no se complete no se
publicar nueva versin
Debemos indicar al CVS cuando una versin est
terminada manualmente, esto se llama commiting
Las versiones se llaman commits (del ingls enviar y
comprometerse por el envo)
Toda informacin es guardada en carpetas especiales
ocultas para no aadir complejidad

Cmo funciona el control de versiones

Los CVS tienen la funcionalidad de mostrar una lista de


commits o incluso cambiar la versin de tu proyecto a
alguna de estas versiones

Cmo funciona el control de versiones

Los CVS tambin permiten compartir los proyectos con


otros usuarios para colaborar y no perder de vista los
cambios de los dems
Tambin aaden herramientas especializadas para
ayudarnos a trabajar con proyectos grandes y
complicados
Existen muchos controles de versiones: CVS, SVN,
Mercury, Git depende de nuestras preferencias cual
es mejor utilizar
Sistema Operativo
Editor de texto
...

Por qu Git
Git

Git es un SCV desarrollado por Linus Torvalds para


ayudarle a administrar todo el trabajo del mantenimiento
del ncleo de Linux
El ncleo de linux tiene ms de 15 millones de lneas de
cdigo
Cada da se aaden 3500 nuevas lneas de cdigo
Cada nueva versin del kernel involucra a ms de 1000
desarrolladores diferentes
Git se desarroll para hacer la colaboracin lo ms
rpida e indolora posible

Por qu Git
Control de Versiones Centralizados (SVN)

Existen otros sistemas de


control de versiones
centralizados
donde solo existe un
repositorio guardado en un servidor en red
Estos tienen una serie de desventajas frente a los
distribuidos
No puedes realizar ningn trabajo en tu proyecto sin
conectarte a la red
Si ocurre algo a ese repositorio podras perder todo
el historial de tu proyecto
La necesidad de requerir que todo pase por el
servidor central puede dificultar la colaboracin

Por qu Git
Control de Versiones Distribuidos (GIT)

Git es un sistema de control de


versiones distribuido donde
no existe un repositorio central
Git tienen una serie de ventajas frente a los
centralizados
Tienes tu propio repositorio, por lo que no necesitas
estar conectado a la red para trabajar en el
repositorio
Las interacciones con el repositorio son ms rpidas
La colaboracin es ms fcil, solo hay que coger tu
propia copia del repositorio y empezar

Por qu Git
arquitectura de Git

Linus Torvalds no tena originalmente la idea de que Git


fuera un CVS si no una coleccin de herramientas y
comandos para que alguien pudiera utilizarlos para
construir un CVS
Este sera el motor de un buen CVS que funcionara
rpido y fcil y la gente podra utilizar cualquier
carrocera con ese motor
Con el tiempo Git tendra un motor y una carrocera
propias, por lo que evolucion a un CVS completamente
funcional
La ventaja es que todava hay acceso completo al
motor, pudiendo realizar operaciones muy avanzadas
con Git, haciendo tu repositorio muy robusto y seguro

Por qu Git
GitHub

Es el sitio ms popular para


compartir tu cdigo y administrar
tus proyectos
Es como una red social para tu repositorio
Puedes compartir tus proyectos online
Hacer publicidad de tus proyectos
Compartir proyectos de forma privada con tus
amigos y colaboradores
Otras personas pueden ver el historial de tu proyecto
y aadir comentarios o incluso subir sus propias
commits para mejorar tu proyecto

Webgrafa

Cowboy coder http://c2.com/cgi/wiki?CowboyCoder


http://git-scm.com/book/en/Getting-Started-AboutVersion-Control
http://en.wikipedia.org/wiki/Distributed_revision_control
http://en.wikipedia.org/wiki/Linus_Torvalds
http://stackoverflow.com/questions/740053/why-should-iuse-git-instead-of-svn
http://git-scm.com/book/ch9-1.html
http://royal.pingdom.com/2012/04/16/linux-kerneldevelopment-numbers/
http://git-scm.com/

Você também pode gostar