¿Cómo funciona el control de versiones?

¿cómo funciona el control de versiones? ¿Guarda files diff como un path con hashes para validar el path?

Diferentes VCS usan diferentes enfoques. CVS, por ejemplo, creará un file en el server para cada file que usted confíe. Esto es esencialmente un file en formatting RCS; CVS es solo una envoltura alnetworkingedor de RCS que ejecuta los commands de RCS sobre muchos files en un subtree de directory (RCS solo puede trabajar en files individuales).

El file RCS contiene una list de cambios (número de versión, post de verificación y cuánto se cambió). Luego viene una copy de la versión HEAD actual. El rest de los files son las diferencias entre las versiones ( explicación larga ).

De esta forma, CVS puede devolver rápidamente la versión HEAD (que a menudo se solicita) y puede calcular las otras versiones.

CVS no hace ninguna validation; si uno de sus files se daña, necesita una copy de security. Como CVS se basa en RCS, no puede versionar directorys ni puede rastrear nombres. CVS y RCS usan el command estándar diff(1) para crear los diffs.

Subversion (SVN) funciona de manera similar pero agrega versiones de directorys y cambia el nombre. Además, SVN usa un mejor algorithm de diferencias (xdelta) que proporciona un repository más pequeño.

Para una explicación de cómo funciona Git , mira aquí .

Consulte la serie de blogs Eric Sinks sobre control de versiones .

Además, Joel Spolsky escribió Hg Init: un tutorial de Mercurial , que finalmente me hizo "get" lo que se trata de control de fuente distribuida.

Hay más de una manera de despellejar a un gato …

Darcs es muy diferente y, en mi humilde opinión, más intuitivo que otros SCM incluso distribuidos. Hay una excelente guía para principiantes sobre cómo funciona: Comprensión de Darcs .