control de versiones para binarios

Alvaro Herrera alvherre en alvh.no-ip.org
Lun Sep 7 14:33:40 CLT 2009


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, 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).

> Si no usas nada de esto, te basta cualquier sistema que almacene
> informacion sin sentido en base a fechas: como crear carpetas en una
> carpeta compartida (trivial de hacer y que todos entiendan) sobre un
> filesystem con snapshot (por si alguien se mando un pastelito).

Eso es justamente lo que deja de usar la gente que empieza a aprender a
usar un SCM ... ¿o ya te olvidaste de tu charla de CVS donde contabas lo
de tener varias carpetas con nombres de versión de cada proyecto, y el
enredo que se producía?  Me acuerdo particularmente alguna vez que
fuimos juntos (¿1999-2001?) y la diste en Entel, y nos cruzamos con
alguna celebridad en sesión fotográfica, con unas modelocas que estaban
bien^W^W^W^W^W^W y no se qué más.

> De la interfaz http, hay software tipo cvsweb etc; pero no he visto algo
> "bonito" para usuarios "finales".

cvsweb es horrible.  gitweb es mil veces mejor.  O incluso Trac, pero
este último para archivos binarios es más bien espantosillo.


> > - que tenga políticas de mantención (por ejemplo, los archivos con mas
> > de 10 versiones y con un periodo de 1 ano son automáticamente
> > eliminados)
> 
> Hmmm no estoy seguro, para mi todos estan pensados para almacenar hasta
> el fin de los tiempos... Si recuerdo bien:
> - cvs guarda todo en el mismo archivo, puedes borrar el archivo y
> subirlo de nuevo...
> - svn guarda en su propio fs (sobre una base de datos)...
> - git guarda en su propio fs (sobre el sistema de archivos)...

En varios casos se pueden usar "hooks" para hacer cosas raras; por lo
menos en Monotone podrías poner funciones en Lua para borrar revisiones.
Sin embargo, con los SCMs distribuidos no tiene mucho sentido borrar una
revisión antigua, porque se reinstaurará si se conecta alguien remoto
cuyo sistema incluya esa revisión.  El truco para entenderlo es darse
cuenta que en un SCM distribuido, ningún repositorio es el "master" más
que por convención, y por lo tanto no puedes borrar nada del repositorio
a menos que pongas a todos los repositorios de acuerdo simultáneamente,
lo que en general es imposible.

-- 
Alvaro Herrera                          Developer, http://www.PostgreSQL.org/
"Las mujeres son como hondas:  mientras más resistencia tienen,
 más lejos puedes llegar con ellas"  (Jonas Nightingale, Leap of Faith)


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