Hola a todos.
Trataré de aclarar las respuestas a la pregunta 17, que decía así:
1. En un sistema de control de versiones centralizado
a) los usuarios deben copiar en su espacio de trabajo cada uno de los componentes que quieren modificar.
b) no se permite que dos usuarios copien el mismo componente y trabajen cada uno en una versión distinta de aquel.
c) el sistema crea siempre en el espacio de trabajo de cada usuario una copia del repositorio master del proyecto.
d) si dos usuarios descargan y trabajan sobre el mismo componente, cuando cada uno termina y sube el componente modificado al repositorio, el último en subirse puede sobrescribir la versión del otro.
Creo que no hay duda de que la opción a) es verdadera y que la opción c) es falsa.
En cuanto a la opción b), como dice en la diapositiva
cuando NO hay un mecanismo de acceso, si dos desarrolladores tratan de cambiar el mismo archivo al mismo tiempo, uno podría podría sobreescribir el trabajo del otro. Precisamente para evitar esto, los sistemas de control de versiones centralizados proporcionan dos mecanismos de acceso posibles: el de
file-locking y el de
version merging. En el primero, no hay posibilidad de trabajar de forma concurrente e independiente sobre el mismo archivo; en el segundo, sí.
Y Sommerville dice que «los sistemas de control de versiones centralizados y distribuidos permiten el desarrollo independiente de componentes compartidos, de distinta manera» (Sommerville [10.a ed.], 2016, p. 737). Y pasa a explicar cada una.
Por lo tanto, la opción b) es incorrecta, porque los sistemas centralizados sí permiten que dos o más usuarios copien el mismo componente en su espacio de trabajo y lo modifiquen.
En particular, en el ejemplo que da Sommerville, explica que, si Alice y Bob trabajan sobre un mismo componente, si Alice ingresa (hace check-in) su componente [al repositorio] primero, cuando Bob ingresa el suyo después, se crea una nueva versión, «de forma tal que los cambios de Alice no se sobreescriban» (Sommerville [10.a ed.], 2016, p. 737). En el mismo sentido aclara a continuación: «Si una o más personas están trabajando sobre un componente al mismo tiempo, cada una debe extraer [hacer el check-out] el componente desde el repositorio. Si se ha extraído un componente, el sistema de control de versiones alerta a otros usuarios que también quieran extraerlo que el componente ha sido extraído por otra persona. El sistema también asegurará que, cuando los componentes modificados se ingresen, a las diferentes versiones se les asigne un identificador de versión distinto y que se almacenen por separado» (Sommerville [10.a ed.], 2016, p. 737).
Por tanto, la opción d) también es falsa, porque si dos usuarios descargan y trabajan sobre el mismo componente (esto ya excluye el mecanismo de file-locking), cuando cada uno termina y sube el componente modificado al repositorio, el sistema le asigna al último en subirse un identificador de versión distinto y lo almacena por separado para evitar que sobreescriba la versión del otro.
Espero haber despejado las dudas. Quedo a disposición por cualquier consulta adicional.
Saludos cordiales,
María