control de versiones para binarios

Germán Póo-Caamaño gpoo en calcifer.org
Lun Sep 7 15:54:46 CLT 2009


On Mon, 2009-09-07 at 15:18 -0400, Aldrin Martoq wrote:
> On Mon, 2009-09-07 at 14:33 -0400, Alvaro Herrera wrote:
> > Aldrin Martoq escribió:
> > > Los formatos binarios que describes no son entendidos por ninguna
> > > herramienta que conozco, asi que te da lo mismo usar cualquiera: para
> > > todas es solo binario sin sentido, y en todas funciona igual (cvs, git,
> > > svn, hg, ...).
> > Estás en un error -- CVS no hace "diffs" entre archivos binarios,
> 
> Hmmm. Tal vez me exprese mal, pero no estoy diciendo que cvs haga diff
> sobre binarios; sino que por el contrario: como no puedes hacer diff de
> un binario da lo mismo que herramienta uses.
> 
> > sino
> > que almacena el binario completo cada vez. Las otras herramientas en
> > cambio (AFAIK) sólo almacenan deltas.  Esto puede ser malo o bueno
> > dependiendo de varios factores (por ej. qué tan grandes sean los deltas,
> > y qué tan grandes son los archivos).

AFAIK, git no almacena deltas.  Tiene una mochila que puede crecer y
requerir llamar al recolector de basura de vez en cuando.  Pero también
tiene sus ventajas.

> "Da lo mismo" se refiere al funcionamiento que percibe el usuario. Como
> funciona internamente nos importa a nosotros (y en eso el gusto por
> elegir tal o cual herramienta).

No da lo mismo.  Uno de los requerimientos que planteó Víctor Hugo fue
eliminar historia, cuyo objetivo (infiero), es que el repositorio no
crezca demasiado.

Subversion es muy ineficiente en almacenar los datos.  Por ejemplo, en
el caso de GNOME:

* El repositorio CVS (1997-04/2002) ocupa 12,1GB.
* El repositorio de Subversion (1997-04/2009) ocupa 24,1GB 
* El repositorio git (1997-09/2009) ocupa 4,7GB

git ocupa mucho menos espacio y tiene mucho más historia.  Pero, si
quieres datos de un repositorio a un mismo instante, Keith Packard hizo
el ejercicio sobre Mozilla el 2007:

- CVS: 2,7GB
- Subversion: 8,2GB
- git: 450MB

git es bueno comprimiendo los objetos que almacena.

Para los interesados en las tripas de git, recomiendo leer el capítulo 9
de ProGit (http://progit.org/book/ch9-1.html): Gasfitería y Porcelana.
No es que se meta tan al interior, pero es lo mejor que he encontrado
hasta el momento.

-- 
Germán Póo-Caamaño
Concepción - Chile
http://www.calcifer.org/



Más información sobre la lista de distribución Linux