Sistemas de Control de Versiones

in steemstem •  4 months ago  (edited)

Todos los sistemas sin importar si son de código abierto o software privativo tienen que pasar por un largo proceso de diseño y desarrollo, toda idea inicial sirve de base para generar los primeros prototipos de un sistema. Estos prototipos son sometidos a pruebas y cambios, la corrección de errores y adición de funciones son comunes en todo desarrollo. Aun después de terminado y lanzado un proyecto las modificaciones pueden seguir sucediendo, corrección de errores y nuevas funciones que se siguen desarrollando.


Originalmente el desarrollo de código era realizado por grupos de programadores que realizaban cambios y realizaban copias de las carpetas originales y luego llevaban nuevas carpetas de proyecto con los cambios. En grupos de desarrollador grandes donde cada persona trabajaba en diferentes partes esto podría causar inconvenientes al momento de unir los proyectos y saber cual es la versión definitiva. De esta problemática surgen métodos para llevar el control de las versiones y sobre estos métodos se comienzan a desarrollar sistemas que ayuden a grupos de programadores para el control de dichas versiones.


Los sistemas de control de versiones se presentan en varios escenarios, que van amarrados a los escenarios de desarrollo.


Sistemas para control de sistemas locales


Básicamente son los métodos originales donde se guardan en carpetas los archivos modificados de forma que se pueda recuperar la versión deseada en el momento que se desee. Para llevar el control de los archivos se llevan los cambios en una base de datos local. De forma de poder restaurar los archivos de dicha versión cuando se requiera.


Una de sus mayores limitaciones es que solo permite llevar a cabo la versión de un equipo, sin permitir el trabajo colaborativo.



Imagen realizada por @ubaldonet en Inkscape


Control de Versiones centralizados


La existencia de muchos desarrolladores en un proyecto trajo consigo la necesidad de la colaboración entre varios programadores con muchas partes sobre un mismo código común y módulos que podían solaparse entre sí, el sistema centralizado es cuando varios trabajan y comparten una base de datos de cambios conjuntos, donde pueden bajar las versiones modificadas por otros programadores.


En este sistema es más fácil de administrar lo que cada persona hace y limitar sobre que parte del código puede trabajar, es más fácil unir un proyecto pues no debes consolidar las bases de datos de ca equipo por separado.


Entre sus inconvenientes existe el problema de la dependencia de una base de datos centralizada, causando que el control no funcione al momento de su falla y causando retraso en la producción.



Imagen realizada por @ubaldonet en Inkscape


Control de Versiones Distribuido


Pensando en el inconvenientes de una base de datos únicos surge una variante al sistema descentralizado donde se mantiene un servidor de bases de datos, en cambio se mantiene una copia de la base de datos en cada equipo, de esta forma cada programador replica su trabajo a todos los equipos al momento de realizar una actualización en la base de datos, conservando así una imagen de todos en todos los equipos y el servidor, de esta forma se puede recuperar la base de datos de cualquier equipo en caso de una falla en el servidor.


SI bien se pueden seguir manteniendo roles de trabajo e incluso jerarquías la continuidad del trabajo se mantiene en caso de una falla. Los programadores pueden seguir trabajando de forma individual mientras el servidor se repone en caso de una falla y el trabajo se replicara una vez esté en línea.



Imagen realizada por @ubaldonet en Inkscape



Sistemas de control de versiones


CVS “Concurrent Version System” Fue uno de los primeros sistema cliente servidor originados para la solución de dicho problema, que logro gran popularidad,  este mantiene la información de los archivos y cambios de los ficheros. Con arquitectura cliente servidor, desarrollado bajo la GPL. CVS por su lado es un proyecto que no recibe actualizaciones desde el 2008.


Subversion “SVN” es otro sistema de control de versiones de código abierto, perteneciente al proyecto Apache, trabaja bajo la licencia Apache/BSD. Se puede trabajar desde equipos remotos en la red y permitiendo crear, borrar y administrar las carpetas como si estuvieran en el equipo.


Git


Finalmente con la llegada de Git se dio un punto de referencia en los sistemas de este tipo, el Kernel de Linux es sin duda un proyecto de gran complejidad, sus diferentes versiones en desarrollo en paralelo, es así como Linus Torvalds, el creador del Kernel crea Git buscando un sistema eficiente para el mantenimiento del Kernel y desarrollos en general.


Git nació con la finalidad de tener un sistema de versiones que cumpla con las siguientes características:


  • Velocidad
  • Diseño sencillo
  • Permitir tener múltiples ramas al mismo tiempo
  • Distribuido
  • Manejo de proyectos de cualquier escala que pueden crecer hasta llegar a ser proyectos de gran envergadura.



El manejo de múltiples ramas es una de los punto a tratar en Git de mayor importancia, poder manejar simultáneamente el desarrollo de múltiples versiones de un mismo sistema, cuando se tienen previstos diferentes cambios en el tiempo, donde se agregan diferentes funcionalidades puede ser el manejo de ramas una herramienta importante.


Basándose en esta tecnología surge un proyecto que logra convertirse en una de las tendencias en programación más exitosas, GitHub.


GitHub es un sistema donde basado en Git han creado un repositorio de código compartido, según muchos el más grande del mundo donde miles de programadores suben sus proyectos y llevan el control de sus versiones, estos pueden mantenerse de forma pública o privada, dependiendo diferentes posibilidades del sistema a diversos costos de inscripción.


Se puede considerar que GitHub se volvió la red social de los programadores, el sistema de control de sistemas se volvió un servicio, siendo también una plataforma que creó una afinidad muy grande con los productores de software libre.


Con el crecimiento de GtiHub surge también una duda razonable dentro de ciertos desarrolladores, donde muchos se preguntaron cómo es posible que el repositorio de software libre más grande del mundo este en un sistema propietario y nace GitLab.


GitLab es un sistema de versiones que toma los conceptos de GitHub y lo lleva a su propia plataforma, también presta su plataforma como un servicio pero a diferencia su código en open source por lo cual cualquiera puede instalar su propio servidor de GitLab y utilizarlo como un servicio propio bien sea dentro de una empresa o de forma personal.


Curiosamente GitLab es muy utilizado por empresas de desarrollo de código privativo, que no desean que su código esté expuesto en servidores externos y prefieren tener el control de dicho servicio dentro de sus servidores


GitLab aumentó su presencia tras la compra de GitHub por Microsoft que llevó a muchos desarrolladores y empresas a plantearse .la problemática de tener su código bajo el control de una de las empresas de software más grandes del mundo, sin embargo GitHub sigue su funcionamiento de forma natural y sin mayores cambios.


Consideraciones


El desarrollo de sistemas es una actividad que ha ido madurando a medida que crece, la magnitud de los proyectos han ido creciendo a medida que la complejidad de los sistemas modernos aumentan, sistemas que realizan un sin fin de procesos y que son desarrollados por un gran número de de desarrolladores. Para llevar a cabo desarrollos de este tamaño es necesario que los sistemas de control donde todo el caos generado por todo el trabajo generado en paralelo pueda ser organizado de forma de minimizar errores y perdida de información y horas de trabajo.


Referencia


Pagina Proyecto Git Aquí

Wikipedia Articulo

Wikipedia Articulo

Wikipedia Articulo

Wikipedia Articulo






Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

¡Felicitaciones!


Has sido votado por @entropia

Estás participando para optar a la mención especial que se efectuará el domingo 9 de junio del 2019 a las 8:00 pm (hora de Venezuela), gracias a la cual el autor del artículo seleccionado recibirá la cantidad de 1 STEEM transferida a su cuenta.

¡También has recibido 1 ENTROKEN! El token del PROYECTO ENTROPÍA impulsado por la plataforma Steem-Engine.


Te participamos que puedes invertir en el PROYECTO ENTROPÍA mediante tu delegación de Steem Power y así comenzar a recibir ganancias de forma semanal transferidas automáticamente a tu monedero todos los lunes. Entra aquí para más información sobre cómo invertir en ENTROPÍA.

Contáctanos en Discord.

Apoya al trail de @Entropia y así podrás ganar recompensas de curación de forma automática. Entra aquí para más información sobre nuestro trail.

Puedes consultar el reporte diario de curación visitando @entropia.

Atentamente

El equipo de curación del PROYECTO ENTROPÍA

Y así, todo al día.
Lo curioso de Git es su apoyo en ese proyecto real, el proyecto Linux, tan grande, tan colosal (no en el sentido negativo); y es gestionado gracias a una buena idea.
Por otra parte, sí que es irónico que Github contenía la mayoría de los proyectos de software libre y él era propietario; llega Gitlab a ser open source, y lo usan empresas de desarrollo de código privativo.

Hola @ubaldonet, estarías dispuesto a darnos una charla virtual sobre tus conocimientos en programación? seria genial...!

Busquemos un tema y cuadremos un horario



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie.

If you appreciate the work we are doing, then consider supporting our witness stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Thanks for having added @steemstem as a beneficiary to your post. This granted you a stronger support from SteemSTEM.

Thanks for having used the steemstem.io app. You got a stronger support!

Congratulations @ubaldonet! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You distributed more than 9000 upvotes. Your next target is to reach 10000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

You can upvote this notification to help all Steem users. Learn how here!