En cuanto al caso con Bob y John, los sistemas cooperativos como SVN no impiden este escenario no más que un sistema de bloqueo hace. Puedo 'actualizar' FooBar.java, que satisface svn que tengo la última edición, luego eliminar ese archivo localmente y sobrescribirlo con mi propia copia personal que hice sin tener en cuenta la versión de referencia, y comprobar eso, felizmente destruyendo los cambios del otro tipo. Ningún sistema, ya sea de bloqueo o no, impide esto, por lo que no veo el punto de siquiera incluirlo en el debate.
El verdadero problema es decidir lo que su saldo es de entre
probabilidad de errores de combinación de vs. molestias causadas por la gente archivos de bloqueo
La idea de que sea un sistema no-bloqueo de cierre o es "superior "es una tontería.
He usado VSS, en su modo de bloqueo completo predeterminado, con 6 desarrolladores, y funcionó como un sueño. De vez en cuando, alguien olvidaba liberar un candado y teníamos que buscarlos o romper el candado manualmente y fusionarlos a mano cuando regresaban, pero era muy mínimo. He visto svn arruinar su combinación automática más de una vez, de modo que realmente no confío en eso. No siempre marca un 'conflicto' cuando dos personas han cambiado el mismo archivo de una manera que no se puede fusionar automáticamente.
Por el contrario, he visto gente impaciente con las cerraduras de VSS, edite sus propias copias, y las revise descuidadamente en la parte superior del código de otras personas, y he visto svn me atrapan fácilmente cuando podría intentarlo accidentalmente para verificar algo que haya sido cambiado por alguien más desde la última vez que lo revisé.
Mi punto es, esto no es un debate sensato tener. El éxito de cualquiera de los sistemas se reduce a a la forma de administrar los puntos de conflicto cuando se producen, no si un sistema o el otro es mejor.
"Los desarrolladores de software siempre son optimistas, ¡solo mire sus habilidades de estimación!" - ¡¡Quiéralo!! – tjjjohnson