Вы находитесь на странице: 1из 44

Sistemas de Control de Versiones

Eudris B. Cabrera Rodrguez


Ingeniero Telemtico
Desarrollador de Software / Consultor Informtico
Junio 2013, Santiago de los Caballeros, R. D.
Los conceptos y juicios de valor emitidos en esta presentacin son
responsabilidad personal y no se puede entender como una posicin
oficial de alguna empresa con la que he tenido relacin laboral.
Asuntos Legales
Todas las marcas registradas, as como todos los logotipos, imgenes,
fotografas, audio y vdeos mostrados en esta presentacin son
propiedad de sus respectivos propietarios.
Su utilizacin es solamente para fines ilustrativos y no pretendo dar a
entender cualquier afiliacin con esas empresas.
Responsabilidades
Contenido
Qu es un sistema de control de versiones ?
Cmo funciona ?
Prcticas Obsoletas.
Porqu son necesarios ?
Ventajas.
Evolucin.
Principales sistemas de control de versiones de cdigo abierto.
Conclusiones.
Qu es un sistema de control de versiones ?
Es un software que administra el acceso a un conjunto de archivos,
y mantiene un historial de cambios realizados.
El control de versiones es til para guardar cualquier
documento que cambie con frecuencia, como una novela, o el
cdigo fuente de un programa.
Cmo funciona ?
Normalmente consiste en una copia maestra en un repositorio
central, y un programa cliente con el que cada usuario sincroniza su
copia local.
Esto permite compartir los cambios sobre un mismo conjunto de
archivos.
Adems, el repositorio guarda registro de los cambios realizados por
cada usuario, y permite volver a un estado anterior en caso de
necesidad.
Flujo de trabajo centralizado
Prcticas Obsoletas
Si alguna vez ha colaborado con otras personas en un proyecto, usted sabe
la frustracin de constante intercambio de archivos.
Los programadores a travs del tiempo han usado diversos mtodos para
compartir su cdigo fuente en un ambiente de desarrollo colaborativo, a
continuacin algunas de las soluciones ms usadas:
Realizar copias en diferentes computadoras
Mantener un backup en computadoras o servidores diferentes, as
como tambin, guardar copia en disco compactos o disco externos.
Si bien es cierto que sta prctica puede mantener a salvo los cdigos
fuentes, tambin es cierto que tiene desventajas a la hora de guardar
versiones.
En cada modificacin que hace al cdigo original debe ir guardando
tus propias copias de la versin anterior a la modificacin y de la nueva
versin.
Crear aplicaciones propias
Crear aplicaciones in-house para manejar las versiones de tu cdigo,
quizs sea una buena opcin pero est reinventando la rueda, ya que
existen opciones open source para manejar versiones.
El tiempo que debes utilizar para desarrollar una nueva aplicacin para
estos fines puede utilizarlo en el desarrollo de otro proyecto.
Guardar los fuentes en Dropbox
Una solucin usadas en los ltimos tiempos por los programadores.
Dropbox internamente funciona como un manejador de versiones pero
tiene sus limitantes en el uso que puede darle un desarrollador.
Las soluciones anteriores pueden tener su utilidad y dar resultados
aceptables, sin embargo, es recomendable usar una solucin general,
diseada para mantener tu cdigo a salvo y de forma centralizada,
como lo hacen los sistemas de control de versiones.
Por qu son necesarios?
En la seccin anterior presentamos algunas prcticas usadas por los
programadores y sus desventajas.
Todos los sistemas de control de versiones tienen ciertas
caractersticas que eliminan muchas de las desventajas presentadas
anteriormente, entre las cuales podemos mencionar:
Actualiza archivos modificados
El cliente recorre nuestro cdigo y sincroniza nuestra copia local con el
repositorio.
Copias de seguridad centralizadas
Solo el administrador debe preocuparse de realizar copias de
seguridad en el repositorio.
Esto se automatiza fcilmente con una tarea cron [http://www.gnu.
org/directory/cron.html] o similares.
Historial de cambios
El repositorio guarda registro de todos los cambios realizados.
Es posible recuperar cualquiera de las versiones anteriores de
cualquier archivo.
Si alguien borra todos los archivos, podemos volver atrs y recuperar
su contenido.
Acceso remoto
Es posible acceder remotamente al repositorio.
No es necesario que el equipo est dentro de la misma LAN.
Seguridad
Es posible otorgar diferentes permisos sobre diferentes ramas del
proyecto.
Por ejemplo, estableciendo permiso universal de lectura, y permiso de
escritura slo a ciertos usuarios.
Qu hacer cuando dos usuarios
intentan modificar el mismo
archivo?
Existen dos
opciones ...
1. Bloqueos (Locks)
El usuario bloquea el archivo
durante su edicin, evitando el
acceso concurrente de otros
usuarios.
Existen varios problemas:
el usuario que acapara archivo,
el interbloqueo entre usuarios
que necesitan varios archivos,
y la falta de concurrencia.
2. Merge (fusin de cambios)
los archivos se acceden
concurrentemente.
Los cambios realizados sobre un
mismo archivo son fusionados
inteligentemente por el sistema.
El nico problema es el intento
de fusin de cambios
incompatibles, que ha de
solucionarse manualmente.
Ventajas
La mayora de los desarrolladores probablemente han trabajado con
algn tipo de sistema de control de versiones, pero las personas en
otras reas pueden tener un concepto extrao.
La ventaja ms obvia de usar control de versiones es la posibilidad
de tener un nmero ilimitado de personas que trabajan en la
misma base de cdigo, sin tener que enviar constantemente los
archivos de ida y vuelta.
Desarrolladores y otros profesionales que manejan archivos a los
cuales se le realizan cambios constantemente, pueden beneficiarse del
uso de los sistemas de control de versiones para guardar copias de
sus archivos, diseos, libros, etc.
Usted puede navegar por los cambios anteriores realizado a su
repositorio y volver a versiones anteriores si pasa algo.
Evolucin
Principales sistemas de control de
versiones de cdigo abierto
CVS
Concurrent Versions System
Desarrollador:
The CVS Team
Url:
savannah.nongnu.org/projects/cvs
Lanzamiento inicial :
19 de Noviembre de 1990
Programado en C.
Sistema operativo:
Unix-like, Windows
Licencia:
GNU General Public License (GPL)
Esquema de trabajo
CVS
Es el abuelo de los sistemas de control de versiones.
Fue lanzado por primera vez en 1986.
CVS tuvo el mrito de ser el primer sistema usado por el movimiento
de cdigo abierto para que los programadores colaborarn
remotamente mediante el envo de parches.
Es de uso gratuito, cdigo abierto, y emplea fusin de cambios.
Aunque CVS puede ser una tecnologa antigua, todava es muy til
para realizar copias de seguridad y compartir archivos.
SVN
Desarrollador:
Comunidad, y desarrolladores de
CollabNet, Elego, VisualSVN, WANdisco
Url: http://subversion.apache.org
Lanzamiento inicial :
20 de octubre de 2000
Programado en C.
Sistema operativo: Multiplataforma
Licencia: Licencia Apache
Flujo de trabajo centralizado
Subversion se cre para igualar y mejorar la funcionalidad de CVS,
preservando su filosofa de desarrollo.
Su desarrollo comenz en el ao 2000 como proyecto de cdigo
abierto apadrinado por CollabNet.
El lder del equipo de desarrollo fue Karl Fogel, autor de Open Source
Development with CVS y fundador de Cyclic Software (compaa de
desarrollo y soporte comercial para CVS.
Probablemente sea el sistema de control de versiones con la adopcin
ms amplia.
La mayora de los proyectos de cdigo abierto utiliza Subversion como
repositorio.
Google Code utiliza Subversion exclusivamente para distribuir cdigo.
Otros proyectos de mayor envergadura, como SourceForge, Apache,
y muchos otros tambin lo utilizan.
GIT
Desarrollador:
Junio Hamano, Linus Torvalds
Url:
http://git-scm.com
Diseador:
Linus Torvalds
Programado en C, Bourne Shell,
Perl1
Licencia : GNU GPL v2
Flujos de trabajo distribuidos
Es la nueva estrella de los sistemas de control de versiones.
Inicialmente diseado y desarrollado por Linus Torvalds para el
desarrollo del Kernel de Linux, desde ese entonces, ha sido adoptado
por otros proyectos.
Git se enorgullece de ser un sistema rpido y eficaz, muchos
proyectos de cdigo abierto importantes utilizan Git para alimentar sus
repositorios, proyectos como: Linux Kernel, WINE, Fedora y muchos
ms.
Git ofrece un tipo de control de versiones diferente, un sistema de
control distribuido de versiones.
Con un sistema de control de versiones distribuido, no hay una sola
base de cdigo centralizada para tirar el cdigo.
Diferentes ramas sostienen las diferentes partes del cdigo.
Otros sistemas de control de versiones, como SVN y CVS, utilizar el
control de versiones centralizado, lo que significa que slo se utiliza
una copia original del software.
GitHub ha ayudado recientemente a establecer Git como un gran
sistema de control de versiones, ofreciendo una hermosa interfaz para
muchos proyectos grandes, como Ruby on Rails, Netty y otros ms.
Sin embargo, Git no es tan fcil de aprender como CVS o SVN, as
que es mucho ms difcil de usar para un principiante.
Ms informacin en:
https://github.com
Mercurial
Desarrollador:
Matt Mackall
Url: http://mercurial.selenic.com
Programado en Python y C
Sistema operativo:
Tipo Unix, Windows, Mac OS X
Licencia : GPL v2
Esquema de trabajo
Es otro sistema de control de versiones distribuidos de cdigo
abierto, como Git.
Mercurial fue diseado para proyectos ms grandes, probablemente
fuera del alcance de los diseadores y desarrolladores web
independientes.
Eso no quiere decir que los equipos de desarrollo pequeos no pueden
o no deben utilizarlo.
Mercurial es muy rpido, y fue diseado con el rendimiento como la
caracterstica ms importante.
Aparte de ser muy rpido y escalable, Mercurial es un sistema mucho
ms simple que Git, por lo que atrae a algunos desarrolladores.
No hay tantas funciones para aprender, y las funciones son similares a
los de otros sistemas de CVS.
Tambin viene equipado con una interfaz Web independiente y amplia
documentacin en la comprensin de Mercurial si usted ha estado
utilizando otro sistema.
Bazaar
Desarrollador:
Canonical Ltd. y comunidad
Url: bazaar.canonical.com
Diseador: Martin Pool
Lanzamiento inicial:
14 de diciembre de 2007
Programado en Python, Pyrex, C
Sistema operativo:
Multiplataforma
Licencia:
GPLv2 o superior1 (software libre)
Flujo de trabajo
Es otro sistema distribuido de control de versiones, como Mercurial y
Git, que ofrece una experiencia de usuario muy amigable.
Se llama a s mismo "El control de versiones para los seres
humanos."
Es compatible con muchos tipos diferentes de flujos de trabajo, con
muchas variaciones entre ellos.
Se trata de un gran sistema de control de versiones para casi cualquier
proyecto, ya que es fcil de modificar.
Tambin es integrable, por lo que puede agregar a los proyectos
existentes.
Bazaar tambin tiene una comunidad fuerte que mantiene cosas como
plug-ins y un montn de herramientas de terceros.
Bazaar es usado por miles de proyectos, incluyendo a :
GNU
BugZilla Debian LaunchPad
Linux Foundation MariaDB Inkscape
Popularidad
ZeroTurnaround Developer Productivity Report 2012
Recursos
CVS:
http://cvs.nongnu.org/
http://en.wikipedia.org/wiki/Concurrent_Versions_System
SVN:
http://subversion.tigris.org/
http://code.google.com/
http://www.beanstalkapp.com/
http://en.wikipedia.org/wiki/Apache_Subversion
Git
http://en.wikipedia.org/wiki/Git_(software)
https://git.wiki.kernel.org/index.php/GitSvnComparsion
Mercurial
http://www.selenic.com/mercurial/wiki/index.cgi/Tutorial
http://www.selenic.com/mercurial/wiki/index.cgi/UnderstandingMercurial
http://en.wikipedia.org/wiki/Mercurial
Bazaar:
http://bazaar-vcs.org/
http://bazaar-vcs.org/Workflows
http://doc.bazaar-vcs.org/latest/en/tutorials/using_bazaar_with_launchpad.html
Conclusiones
Desarrollar un software implica invertir mucho tiempo y dinero. No
proteger el cdigo fuente con un sistema de control de versiones
es irresponsable y puede traer graves consecuencias.
Cualquier persona que trabaje con archivos que son sometidos a
cambios constantemente pueden beneficiarse del uso de los
sistemas de control de versiones para guardar copias de sus
archivos, diseos, libros, etc.
Existen sistemas de control de versiones de cdigo abierto, libre
distribucin y amplia documentacin, lo que permite su fcil
implementacin y curva de aprendizaje.
Referencias
Distributed Source Control Management systems
http://blog.tfnico.com/2010/06/distributed-source-control-management.html
7 Version Control Systems Reviewed
http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-
control-systems/
Libro Version Control with Subversion (Ben Collins-Sussman, Brian
W. Fitzpatrick, C. Michael Pilato).
Ensayo "Subversion" de Alejandro Ramrez
Email:
eudris@gmail.com
Skype:
eudriscabrera
LinkedIn:
http://www.linkedin.com/in/eudriscabrera
GitHub:
https://github.com/ecabrerar

Вам также может понравиться