[ES] Sistemas de control de versiones

download [ES] Sistemas de control de versiones

of 44

  • date post

    12-Jun-2015
  • Category

    Technology

  • view

    2.225
  • download

    1

Embed Size (px)

Transcript of [ES] Sistemas de control de versiones

  • 1. Sistemas de Control de VersionesEudris B. Cabrera RodrguezIngeniero TelemticoDesarrollador de Software / Consultor InformticoJunio 2013, Santiago de los Caballeros, R. D.

2. Los conceptos y juicios de valor emitidos en esta presentacin sonresponsabilidad personal y no se puede entender como una posicinoficial de alguna empresa con la que he tenido relacin laboral.Asuntos LegalesTodas las marcas registradas, as como todos los logotipos, imgenes,fotografas, audio y vdeos mostrados en esta presentacin sonpropiedad de sus respectivos propietarios.Su utilizacin es solamente para fines ilustrativos y no pretendo dar aentender cualquier afiliacin con esas empresas.Responsabilidades 3. 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. 4. 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 cualquierdocumento que cambie con frecuencia, como una novela, o elcdigo fuente de un programa. 5. Cmo funciona ?Normalmente consiste en una copia maestra en un repositoriocentral, y un programa cliente con el que cada usuario sincroniza sucopia local.Esto permite compartir los cambios sobre un mismo conjunto dearchivos.Adems, el repositorio guarda registro de los cambios realizados porcada usuario, y permite volver a un estado anterior en caso denecesidad. 6. Flujo de trabajo centralizado 7. Prcticas ObsoletasSi alguna vez ha colaborado con otras personas en un proyecto, usted sabela frustracin de constante intercambio de archivos.Los programadores a travs del tiempo han usado diversos mtodos paracompartir su cdigo fuente en un ambiente de desarrollo colaborativo, acontinuacin algunas de las soluciones ms usadas: 8. Realizar copias en diferentes computadorasMantener un backup en computadoras o servidores diferentes, ascomo tambin, guardar copia en disco compactos o disco externos.Si bien es cierto que sta prctica puede mantener a salvo los cdigosfuentes, tambin es cierto que tiene desventajas a la hora de guardarversiones.En cada modificacin que hace al cdigo original debe ir guardandotus propias copias de la versin anterior a la modificacin y de la nuevaversin. 9. Crear aplicaciones propiasCrear aplicaciones in-house para manejar las versiones de tu cdigo,quizs sea una buena opcin pero est reinventando la rueda, ya queexisten opciones open source para manejar versiones.El tiempo que debes utilizar para desarrollar una nueva aplicacin paraestos fines puede utilizarlo en el desarrollo de otro proyecto. 10. Guardar los fuentes en DropboxUna solucin usadas en los ltimos tiempos por los programadores.Dropbox internamente funciona como un manejador de versiones perotiene sus limitantes en el uso que puede darle un desarrollador.Las soluciones anteriores pueden tener su utilidad y dar resultadosaceptables, 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. 11. Por qu son necesarios?En la seccin anterior presentamos algunas prcticas usadas por losprogramadores y sus desventajas.Todos los sistemas de control de versiones tienen ciertascaractersticas que eliminan muchas de las desventajas presentadasanteriormente, entre las cuales podemos mencionar: 12. Actualiza archivos modificadosEl cliente recorre nuestro cdigo y sincroniza nuestra copia local con elrepositorio.Copias de seguridad centralizadasSolo el administrador debe preocuparse de realizar copias deseguridad en el repositorio.Esto se automatiza fcilmente con una tarea cron [http://www.gnu.org/directory/cron.html] o similares. 13. Historial de cambiosEl repositorio guarda registro de todos los cambios realizados.Es posible recuperar cualquiera de las versiones anteriores decualquier archivo.Si alguien borra todos los archivos, podemos volver atrs y recuperarsu contenido. 14. Acceso remotoEs posible acceder remotamente al repositorio.No es necesario que el equipo est dentro de la misma LAN.SeguridadEs posible otorgar diferentes permisos sobre diferentes ramas delproyecto.Por ejemplo, estableciendo permiso universal de lectura, y permiso deescritura slo a ciertos usuarios. 15. Qu hacer cuando dos usuariosintentan modificar el mismoarchivo? 16. Existen dosopciones ... 17. 1. Bloqueos (Locks)El usuario bloquea el archivodurante su edicin, evitando elacceso concurrente de otrosusuarios.Existen varios problemas:el usuario que acapara archivo,el interbloqueo entre usuariosque necesitan varios archivos,y la falta de concurrencia. 18. 2. Merge (fusin de cambios)los archivos se accedenconcurrentemente.Los cambios realizados sobre unmismo archivo son fusionadosinteligentemente por el sistema.El nico problema es el intentode fusin de cambiosincompatibles, que ha desolucionarse manualmente. 19. VentajasLa mayora de los desarrolladores probablemente han trabajado conalgn tipo de sistema de control de versiones, pero las personas enotras reas pueden tener un concepto extrao.La ventaja ms obvia de usar control de versiones es la posibilidadde tener un nmero ilimitado de personas que trabajan en lamisma base de cdigo, sin tener que enviar constantemente losarchivos de ida y vuelta. 20. Desarrolladores y otros profesionales que manejan archivos a loscuales se le realizan cambios constantemente, pueden beneficiarse deluso de los sistemas de control de versiones para guardar copias desus archivos, diseos, libros, etc.Usted puede navegar por los cambios anteriores realizado a surepositorio y volver a versiones anteriores si pasa algo. 21. Evolucin 22. Principales sistemas de control deversiones de cdigo abierto 23. CVSConcurrent Versions SystemDesarrollador:The CVS TeamUrl:savannah.nongnu.org/projects/cvsLanzamiento inicial :19 de Noviembre de 1990Programado en C.Sistema operativo:Unix-like, WindowsLicencia:GNU General Public License (GPL)Esquema de trabajo 24. CVSEs 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 movimientode cdigo abierto para que los programadores colaborarnremotamente 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 tilpara realizar copias de seguridad y compartir archivos. 25. SVNDesarrollador:Comunidad, y desarrolladores deCollabNet, Elego, VisualSVN, WANdiscoUrl: http://subversion.apache.orgLanzamiento inicial :20 de octubre de 2000Programado en C.Sistema operativo: MultiplataformaLicencia: Licencia ApacheFlujo de trabajo centralizado 26. 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 cdigoabierto apadrinado por CollabNet.El lder del equipo de desarrollo fue Karl Fogel, autor de Open SourceDevelopment with CVS y fundador de Cyclic Software (compaa dedesarrollo y soporte comercial para CVS. 27. Probablemente sea el sistema de control de versiones con la adopcinms amplia.La mayora de los proyectos de cdigo abierto utiliza Subversion comorepositorio.Google Code utiliza Subversion exclusivamente para distribuir cdigo.Otros proyectos de mayor envergadura, como SourceForge, Apache,y muchos otros tambin lo utilizan. 28. GITDesarrollador:Junio Hamano, Linus TorvaldsUrl:http://git-scm.comDiseador:Linus TorvaldsProgramado en C, Bourne Shell,Perl1Licencia : GNU GPL v2Flujos de trabajo distribuidos 29. Es la nueva estrella de los sistemas de control de versiones.Inicialmente diseado y desarrollado por Linus Torvalds para eldesarrollo del Kernel de Linux, desde ese entonces, ha sido adoptadopor otros proyectos.Git se enorgullece de ser un sistema rpido y eficaz, muchosproyectos de cdigo abierto importantes utilizan Git para alimentar susrepositorios, proyectos como: Linux Kernel, WINE, Fedora y muchosms. 30. Git ofrece un tipo de control de versiones diferente, un sistema decontrol distribuido de versiones.Con un sistema de control de versiones distribuido, no hay una solabase 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 elcontrol de versiones centralizado, lo que significa que slo se utilizauna copia original del software. 31. GitHub ha ayudado recientemente a establecer Git como un gransistema de control de versiones, ofreciendo una hermosa interfaz paramuchos proyectos grandes, como Ruby on Rails, Netty y otros ms.Sin embargo, Git no es tan fcil de aprender como CVS o SVN, asque es mucho ms difcil de usar para un principiante.Ms informacin en:https://github.com 32. MercurialDesarrollador:Matt MackallUrl: http://mercurial.selenic.comProgramado en Python y CSistema operativo:Tipo Unix, Windows, Mac OS XLicencia : GPL v2Esquema de trabajo 33. Es otro sistema de control de versiones distribuidos de cdigoabierto, como Git.Mercurial fue diseado para proyectos ms grandes, probablementefuera del alcance de los diseadores y desarrolladores webindependientes.Eso no quiere decir que los equipos de desarrollo pequeos no puedeno no deben utilizarlo.Mercurial es muy rpido, y fue diseado con el rendimiento como lacaracterstica ms importante. 34. Aparte de ser muy rpido y escalable, Mercurial es un sistema muchoms simple que Git, por lo que atrae a algunos desarrolladores.No hay tantas funciones para aprender, y las funciones son similares alos de otros sistemas de CVS.Tambin viene equipado con una interfaz Web independiente y ampliadocumentacin en la comprensin de Mercurial si usted ha estadoutilizando otro sistema. 35. BazaarDesarrollador:Canonical Ltd