Una palabra para resumir Git y otros DVCS

A medida que me familiarizo con Git, siento cada vez más que:

Git y otros DVCS dan un salto más allá que los VCS centralizados tradicionales, ya que no solo revisan los files en cuestión, sino también toda la database de versiones.

Creo que esta es la principal diferencia entre DVCS y CVCS, y también la principal base de todos los demás beneficios de DVCS.

O, pongámoslo de esta manera:

Múltiples VCS locales + Una copy de security centralizada = DVCS.

Cambié la ecuación anterior a esto:

Múltiples clones locales + Una copy de security centralizada = DVCS.

¿Derecha?

Lo que está describiendo es la naturaleza misma de un sistema distribuido: todo el repository está clonado (con su historial completo).

un DVCS mezcla el control de versiones (ramificación y tags) con la publicación (empujar / tirar hacia / desde el repository remoto)

Pero hay otras características que diferencian un DVCS del CVCS.
Especialmente en términos de flujo de trabajo . Consulte " Describir su flujo de trabajo de usar control de versiones (VCS o DVCS) "

Y no olvide que un DVCS no tiene autorización ni authentication . Sin embargo, existen soluciones para proporcionarlas, por ejemplo, apache2-authn-networkingmine en combinación con el sistema de gestión de proyectos de Redmine.

El OP smwikipedia agrega:

Múltiples VCS locales + Una copy de security centralizada = DVCS.

No creo que pueda resumir de esa manera, especialmente teniendo en count que sería difícil emular las funciones de inserción / extracción, ya que la mayoría de los VCS (SVN, ClearCase, Perforce, …) no tienen un repository "local", solo funcionan localmente. espacios, y dependen en gran medida de su repository central.

Si realmente quiere ponerlo en una frase, la principal diferencia entre CVCS y DVCS es que todos trabajan en sus propias versiones, intercambiando sus actualizaciones (por lo tanto distribuidas en DVCS). Si no le counts específicamente a git, no downloadá todas las sucursales de otros contribuidores.

Eche un vistazo a gitworkflows para la idea que hay detrás de él o en Bazaar Workflows para una muy buena representación gráfica de las posibilidades (también es posible usar git o cualquier otro DVCS como un CVCS).

Esa es una diferencia, sí. Permite trabajar fuera de línea y propagar los cambios más tarde.

Otra diferencia, que puede verse como una consecuencia, es la administración de la sucursal. Cuando trabajas (y comprometes) localmente, creas una nueva twig, por layout. La propagación de cambios es simplemente fusión de twigs. Es por eso que git (y ciertamente hg y bzr) tienen fuertes algorithms de fusión.

(Mi primera respuesta fue simplemente "sí". Por una vez me alegro del límite de 30 caracteres).

Excepto que la copy de security centralizada es completamente opcional. El repo "central" es una distinción social, no técnica. Realmente no verifica la database de la versión "uno". Más bien, cualquier clon dado es la database de versiones.

Mi descripción de una línea es:

Todas las sucursales que desee, en tantos repositorys como desee, compartiendo qué, cómo y con quién desea.