Entre las herramientas básicas a disposición de cualquier programador, el sistema de control de versiones es al que menos importancia se da. Aunque estrictamente no sea necesario, es muy útil para generar informes de estado, historiales de cambios y muchas otras posibilidades que ayudan a la organización del trabajo individual y facilitan enormemente la labor en equipo. Se aborda un panorama muy general sobre la clasificación, funcionamiento básico y terminología. Dado en #shlcon el jueves 18 de noviembre de 2010.
2. 18 nov '10
Si las cosas fueran perfectas...
● No habría que
depurar...
● El trabajo sería
colaborativo...
● Absorberíamos los
posibles errores...
● <Inserte buenos
deseos aquí>
Introducción
3. 18 nov '10
... pero como (afortunadamente) no
es así
Administración
● Del tiempo
● De los recursos
● De la gente
● Planeación,
organización,
dirección y control.
Introducción
4. 18 nov '10
Las tres herramientas básicas de
cualquier programador
● Editor de texto
● Sistema de control de
versiones
● Sistema de
automatización de
construcciones
Introducción
5. 18 nov '10
Las tres herramientas básicas de
cualquier programador
Se contempla sólo
para proyectos
“grandes”
● Editor de texto
● Sistema de control de
versiones
● Sistema de
automatización de
construcciones
Introducción
7. 18 nov '10
Agenda
● ¿Qué es un control de versiones?
● Terminología básica
● Comandos básicos
● Estrategias de organización
● Recomendaciones y primeros pasos
Introducción
8. 18 nov '10
Control de versiones
● Administración de
cambios a archivos
● Común en desarrollo
de software porque
un equipo puede
cambiar los mismos
archivos
● Los cambios se
representan con un
código: r16
¿Qué es un sistema de control de versiones?
9. 18 nov '10
... para cada necesidad (o gusto)
● Centralizados
● Cliente-servidor
● Distribuidos
● P2P
cvs
CVSNT Visual Sourcesafe
SVK
¿Qué es un sistema de control de versiones?
10. 18 nov '10
¿Centralizado o distribuido?
● De las mejores
maneras para iniciar
una guerra “religiosa”
● Lo importante es la
protección contra la
“Ley de Murphy”
¿Qué es un sistema de control de versiones?
11. 18 nov '10
¿Usarlo o no usarlo?
● Murphy de nuevo
● Trabajo en equipo
● Claridad
● Organización
● Salud mental
¿Qué es un sistema de control de versiones?
12. 18 nov '10
Hablemos de control de versiones
... en inglés (get used to it)
Baseline
Producto(s) a usarse
como base lógica de
comparación
● Working copy
Copia local y privada
● Revision
“Instantánea” en un momento dado
Terminología básica
22. 18 nov '10
... entonces, ¿hay diferencia?
Comandos básicos
Al tener distintos objetivos
específicos, proporcionan
distintas características
23. 18 nov '10
¿Por qué Subversion?
● Commits atómicos
● Al renombrar, mover o copiar archivos se
preserva el historial
● Se versionan los directorios
● Soporte nativo para binarios y tipos
MIME
● Múltiples protocolos incluyendo http y
https
● Se guardan y envían sólo los cambios
entre versiones
Comandos básicos
24. 18 nov '10
¿Por qué Git?
● Ramas locales sin coste adicional
● Todo es local
● Rápido en rendimiento
● Tamaño pequeño
● Área de montaje: elegir qué archivos se enviarán y cuándo
● Todos tienen una copia completa, en caso de problemas
● Se adapta a múltiples flujos de trabajo
● GitHub: la red social del código
● Las revisiones se marcan como hashes SHA-1
Comandos básicos
25. 18 nov '10
¿Por qué Mercurial?
● Soporte desde siempre para múltiples plataformas
● TortoiseHg: un GUI
● Sin necesidad de optimizaciones periódicas (git-gc)
● Proyectos muy grandes como Firefox, Python, OpenJDK
● Grande comunidad apoyando (Googlecode y Bitbucket)
● Las revisiones se marcan en hashes SHA-1 y hace “alias” como
números enteros locales
● Mapea nombres de usuario: además de usernames, nombres
completos y correos electrónicos
Comandos básicos
26. 18 nov '10
Ingeniería de software
● Etiquetas (sólo
lectura)
● Ramas (aislamiento)
● Desarrollo en paralelo
Estrategias de organización
27. 18 nov '10
Desarrollo Web
● Pruebas (sandboxed)
● “Staging sites”:
ensamblado, pruebas
y evaluaciones antes
de ir a producción
(garantía de calidad o
QA)
● Desarrollo en paralelo
Estrategias de organización
28. 18 nov '10
Administración de sistemas
● Respaldo (y rápida
recuperación)
● Organización
● Documentación
Estrategias de organización
29. 18 nov '10
Su punto débil
● Pueden reforzar esquemas
jerárquicos de desarrollo
● Dependencia en
infraestructura: servidor o
programas adicionales
● Curva de aprendizaje:
pareciera sólo para
desarrolladores
● Disciplina: hay que usarlos
Recomendaciones y primeros pasos
31. 18 nov '10
Comparativas y manuales
● Bloggeros y editores:
Para no comenzar de
cero...
● Buscar diferentes
fuentes
● ¿Dudas específicas?
Motores de búsqueda
Recomendaciones y primeros pasos
32. 18 nov '10
... y no olvidar
● Se trata de
herramientas de
trabajo
COLABORATIVO
Recomendaciones y primeros pasos
33. 18 nov '10
Bibliografía y mesografía
●
Control de versiones http://es.wikipedia.org/wiki/Control_de_versiones
● Version control with Subversion http://svnbook.red-bean.com/en/1.1/re04.html
● git(1) Manual Page http://www.kernel.org/pub/software/scm/git/docs/git.html
● Git ready: learn Git one commit at a time http://www.gitready.com/
● Mercurial: The Definitive Guide: http://hgbook.red-bean.com/read/index.html
● Control de versiones y Subversion http://www.slideshare.net/jlpino/control-de-
versiones-y-subversion
● How I learned to love revision control http://www.slideshare.net/yargevad/how-i-
learned-to-love-revision-controlM
Imágenes:
● www.2touchsoccer.com www.soccertraining.com
● www.soccerdrillstips.com eteamz.com
● www.nconnect.net www.connaughtceltic.com
Recomendaciones y primeros pasos