Cuando se imparten clases de SCM a estudiantes que son nuevos en la Gestión de la configuración de software, sucede que surge una pregunta como " What's the difference between checkin and checkout?
".
Y una variación de esto es que tales estudiantes se confunden acerca de estos conceptos de SCM (los entienden al revés).
Entonces, ¿qué tipo de metáfora puedes usar para explicar este concepto SCM crucial a tal audiencia?
terminology
scm
Pierre.Vriens
fuente
fuente
Respuestas:
Para explicarle algo a alguien, intente compararlo con algo con lo que (con suerte) ya estén familiarizados.
Entonces es por eso que solo respondo tal pregunta así:
Nota : esto se aplica a los sistemas centralizados (como los utilizados en entornos de mainframe ...). En sistemas como git, el
checkout
concepto " " tiene un significado completamente diferente (lo cual es IMO también es la razón por la cual en esos sistemas casi no hay confusión sobre ambos conceptos).fuente
Es importante tener en cuenta que los términos "checkin" y "checkout" tienen diferentes significados según el tipo de sistema SCM.
Los sistemas centralizados como TFVC, Subversion y Clearcase usan pagos "exclusivos". Esto es como la metáfora del préstamo de libros de Pierre, donde solo un usuario puede tener un archivo desprotegido a la vez.
Los sistemas distribuidos como git tienen un comando de "pago", pero significa algo completamente diferente.
git checkout
se usa para cambiar entre ramas cuando se trabaja con un repositorio local.fuente
Para sistemas centralizados, piense en ello como una biblioteca técnica. (podría ser un poco de imaginación cómo funciona esta biblioteca hipotética ...)
Si es autor de un documento, puede
checkout
copiar la biblioteca, hacer cambios, devolverlocheck it back in
a la biblioteca para que el mundo lo vea.Esto puede convertirse en un problema si la biblioteca tiene copias digitales, y yo
checkout
un documento, otra persona tambiénchecks out
un documento, ambos hacemos cambios, habrá un conflicto (conflicto de fusión) que podría ser difícil de resolver. Cuando entonces la "solución" inicial para esto es unacheckout
funcionalidad exclusiva ...Por supuesto, para los grandes proyectos se reducen las posibilidades de que un tema crítico conflicto de combinación (personas estarán trabajando en diferentes partes del sistema) por lo que
checkout
/checkin
no se necesita casi la misma cantidad. Y dado que los sistemas distribuidos por diseño requieren una buena funcionalidad de fusión, junto con muchos otros beneficios, ese concepto realmente no existe en git y otros DVCSfuente
Con el repositorio SCM como tema principal, entonces '
fuente
Hay dos tipos de sistemas de control de fuente dependiendo de cuál es la unidad más pequeña de ramificación.
1) Por ramificación de repositorio (CVS, SVN, GIT, Perforce, ... etc.)
En los productos en los que ramifica todo el repositorio, el proceso de pago generalmente creará o habilitará modificaciones a la sucursal local (copia) de todo el repositorio. En esos productos, el registro a menudo no se utiliza y se convierte en parte de la operación de confirmación , que es a la vez el pago de la rama remota, la aplicación del parche local y el registro de la rama remota en una sola operación. No checkin su sucursal local, ya que se comprueba permanentemente. (Nota: en GIT no se compromete con la rama remota, empuja su confirmación local a ella. Estrictamente una diferencia sintáctica ) .
2) Por ramificación de objeto (ClearCase, AccuRev, Oracle ADE)
En productos donde ramifica objetos individuales, como directorios, archivos, etc. El concepto de pago y registro se aplica por objeto por rama. Bloqueará el objeto para modificarlo con el pago y liberarlo con el registro . En esos productos, a menudo trabaja en una rama privada donde las cerraduras no impiden que nadie trabaje y en el momento de la fusión de su rama local en una rama compartida, los objetos también se registran en la rama de fragmentos (principal, principal, rama característica, etc. ) los conflictos de fusión se resuelven y el objeto se registra en la rama compartida. Esto permite que varias personas se "comprometan" al mismo tiempo a una rama compartida siempre que no modifiquen los mismos objetos.
fuente