18 nov '10
Sistemas de control de versiones
Noviembre de 2010
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
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
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
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
18 nov '10
¿Qué caso tiene?
Introducción
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
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?
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?
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?
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?
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
18 nov '10
Versiones
Trunk
Branch
Discontinued
branch
Tags
Terminología básica
18 nov '10
Trabajando
Checkout
Change, diff, delta Commit, checkin
Repository
Terminología básica
18 nov '10
Compartiendo
Merge
Conflict Resolve
Terminología básica
File-locking
18 nov '10
¿Cómo crear un repositorio?
$ svnadmin create ejemplo
$ hg init ejemplo
$ git init ejemplo
Comandos básicos
18 nov '10
¿Cómo “bajar” una copia?
$ svn checkout||co [RUTA]
$ hg update||up||checkout||co [RUTA]
$ git checkout [RUTA]
Comandos básicos
18 nov '10
¿Cómo actualizar la copia local?
$ svn update||up
$ hg update||up||checkout||co
$ git pull
Comandos básicos
18 nov '10
¿Cómo almacenar cambios?
$ svn commit||ci [RUTA]
$ hg commit||ci [RUTA]
$ git push||commit [RUTA]
Comandos básicos
18 nov '10
¿Cómo almacenar nuevas cosas?
$ svn add [RUTA]
$ hg add [RUTA]
$ git add [RUTA]
Comandos básicos
18 nov '10
¿Cómo dejar de almacenar cosas?
$ svn delete||del||remove||rm [RUTA]
$ hg remove [RUTA]
$ git branch -d||D [RUTA]
Comandos básicos
18 nov '10
... entonces, ¿hay diferencia?
Comandos básicos
Al tener distintos objetivos
específicos, proporcionan
distintas características
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
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
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
18 nov '10
Ingeniería de software
● Etiquetas (sólo
lectura)
● Ramas (aislamiento)
● Desarrollo en paralelo
Estrategias de organización
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
18 nov '10
Administración de sistemas
● Respaldo (y rápida
recuperación)
● Organización
● Documentación
Estrategias de organización
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
18 nov '10
¿Dónde empezar?
● http://www.nongnu.org/cvs
● http://cvsnt.org/
● http://subversion.apache.org/
● http://www.gnu.org/software/gnu-arch/
● http://svk.bestpractical.com/
● http://monotone.ca/
● http://codeville.org/
● http://git-scm.com/
● http://mercurial.selenic.com/
● http://bazaar.canonical.com/
● http://www.fossil-scm.org/
Recomendaciones y primeros pasos
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
18 nov '10
... y no olvidar
● Se trata de
herramientas de
trabajo
COLABORATIVO
Recomendaciones y primeros pasos
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
18 nov '10

Sistemas de control de versiones

  • 1.
    18 nov '10 Sistemasde control de versiones Noviembre de 2010
  • 2.
    18 nov '10 Silas 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 Lastres 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 Lastres 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
  • 6.
    18 nov '10 ¿Quécaso tiene? 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 Controlde 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 ¿Centralizadoo 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 ¿Usarloo 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 Hablemosde 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
  • 13.
  • 14.
    18 nov '10 Trabajando Checkout Change,diff, delta Commit, checkin Repository Terminología básica
  • 15.
    18 nov '10 Compartiendo Merge ConflictResolve Terminología básica File-locking
  • 16.
    18 nov '10 ¿Cómocrear un repositorio? $ svnadmin create ejemplo $ hg init ejemplo $ git init ejemplo Comandos básicos
  • 17.
    18 nov '10 ¿Cómo“bajar” una copia? $ svn checkout||co [RUTA] $ hg update||up||checkout||co [RUTA] $ git checkout [RUTA] Comandos básicos
  • 18.
    18 nov '10 ¿Cómoactualizar la copia local? $ svn update||up $ hg update||up||checkout||co $ git pull Comandos básicos
  • 19.
    18 nov '10 ¿Cómoalmacenar cambios? $ svn commit||ci [RUTA] $ hg commit||ci [RUTA] $ git push||commit [RUTA] Comandos básicos
  • 20.
    18 nov '10 ¿Cómoalmacenar nuevas cosas? $ svn add [RUTA] $ hg add [RUTA] $ git add [RUTA] Comandos básicos
  • 21.
    18 nov '10 ¿Cómodejar de almacenar cosas? $ svn delete||del||remove||rm [RUTA] $ hg remove [RUTA] $ git branch -d||D [RUTA] Comandos básicos
  • 22.
    18 nov '10 ...entonces, ¿hay diferencia? Comandos básicos Al tener distintos objetivos específicos, proporcionan distintas características
  • 23.
    18 nov '10 ¿Porqué 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 ¿Porqué 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 ¿Porqué 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íade software ● Etiquetas (sólo lectura) ● Ramas (aislamiento) ● Desarrollo en paralelo Estrategias de organización
  • 27.
    18 nov '10 DesarrolloWeb ● 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ónde sistemas ● Respaldo (y rápida recuperación) ● Organización ● Documentación Estrategias de organización
  • 29.
    18 nov '10 Supunto 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
  • 30.
    18 nov '10 ¿Dóndeempezar? ● http://www.nongnu.org/cvs ● http://cvsnt.org/ ● http://subversion.apache.org/ ● http://www.gnu.org/software/gnu-arch/ ● http://svk.bestpractical.com/ ● http://monotone.ca/ ● http://codeville.org/ ● http://git-scm.com/ ● http://mercurial.selenic.com/ ● http://bazaar.canonical.com/ ● http://www.fossil-scm.org/ Recomendaciones y primeros pasos
  • 31.
    18 nov '10 Comparativasy 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íay 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
  • 34.