Problema en repositorios de versionamiento

Visitas: 26  
Tiempo total: 0 días con 10:25:13 hrs  

Un sistema de versionamiento consiste en el manejo de archivos que componen un software por parte de un grupo de desarrolladores, su objetivo es permitir recuperar la información que fue creada con anterioridad y crear distintas versiones tanto de implementación como finales del código fuente de la aplicación.

Al ser un sistema que es modificado y mantenido por distintas personas surgen problemas por la competencia del acceso a los archivos, siendo este un ejemplo práctico de un sistema concurrente.

A continuación encontrara información acerca del problema del acceso a los archivos por parte de dos o más usuarios y que serán actualizados después por cada uno, habiendo perdido en la última versión las anteriores ediciones.

Compartiendo archivos

El problema

Este problema consiste en que dos o más personas descargan al mismo tiempo la última versión de un determinado archivo en un repositorio de versionamiento. Cada persona realizara un cambio y actualizara el repositorio con su última versión. El problema consiste en que, suponga una cantidad N de personas que descargaron y actualizaron el archivo en el mismo orden (o aleatorio) en que lo descargaron.

La persona 1 actualiza el archivo, después la persona 2 actualiza el mismo archivo perdiendo la versión de la persona 1, después la persona 3 actualiza el mismo archivo perdiendo la versión de la persona 2, …, después la persona N actualiza el mismo archivo perdiendo la versión de la persona N-1.

Solución

La solución a este problema consiste en crear un sistema llamado copiar-modificar-fusionar, el cual consiste en que el software de versionamiento debe de alertar a la persona de la modificación M de N que el archivo fue actualizado por la persona M-1 si M-1>0 y que es diferente a la versión del usuario. Para resolver esto se deberán de fusionar ambas versiones permitiendo que la persona M-1 si M-1>0 haya modificado por ejemplo el footer del archivo y la persona M el header del mismo.

Puede ocurrir que ambas personas hayan actualizado la misma área de código, pero este problema queda fuera de las posibles soluciones que el software de versionamiento puede proveer, quedando a disposición de los usuarios que versión utilizar.

Otros problemas

Algunos otros problemas que se pueden mencionar es en la utilización de la solución bloquear-modificar-desbloquear, esta solución consiste en que cada vez que un usuario va a modificar un archivo este quedara bloqueado y disponible únicamente para su lectura. Esta solución provoca una serie de problemas, entre estos se pueden mencionar el acceso a la edición por dos o más usuarios al mismo tiempo (Ejemplo ideal), provocando que ninguno de estos puede actualizar la información pues estarán bloqueados.

También se pueden mencionar problemas de errores comunes por las personas, por ejemplo una persona edita el código pero olvida actualizarlo, provocando que el archivo quede bloqueado.

Aun así, el sistema de bloquear-modificar-desbloquear resulta óptimo al momento de gestionar sistemas de por ejemplo imágenes, donde esta puede ser únicamente reemplazada por otra nueva, o editada.

Conclusiones

Los sistemas de versionamiento con repositorios en servidores en los cuales los usuarios editaran la información, crean problemas que deben de ser solucionados correctamente utilizando la mejor opción. Para todo esto es necesario una excelente comunicación entre el grupo de desarrollo para evitar inconvenientes y no realizar trabajo innecesario.

Los sistemas de copiar-modificar-fusionar resultan bastante óptimos si se utiliza una excelente comunicación para solucionar inconvenientes, por otro lado bloquear-modificar-desbloquear debe de utilizarse correctamente de acuerdo al tipo de entorno de desarrollo en el cual se implementa, utilizando comunicación para optimizar su utilización.

Referencias electrónicas

[http://tortoisesvn.net/docs/release/TortoiseSVN_es/tsvn-basics-versioning.html]
[http://es.wikipedia.org/wiki/Bloqueo_mutuo]
[http://www.elconspirador.com/2013/10/07/sistema-operativo-como-administrador-de-procesos/]


Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!