Un sistema de control de versiones con requisitos mínimos de espacio en el lado del cliente, y es bueno con los binarys

(Esta es mi primera publicación así que sé gentil) Estoy usando subversion como control de versión en binary grande. Tengo alnetworkingedor de 2.5 gigas de binarys que actualizo cada hora. Recibo aproximadamente 400 megas por valor de diferentes por día. Algunos de los files son PE, pero se trata principalmente de files comprimidos en los que es difícil get buenas diferencias. Las carpetas ".svn" en mis clientes están creciendo a diario y no tengo espacio en los clientes para llevar esto a un ritmo creciente.

Este tamaño es causado por la copy prístina de las subversiones en el cliente (el repository es bastante pequeño). El control de versiones distribuidas como GIT o Mercurial almacenará un depósito de classs en el cliente para el que no tengo espacio. Nunca haré diffs, solo actualizaciones a la cabeza o a una versión dada. Así que la ventaja de la velocidad de la copy prístina en el lado del cliente no me importa.

Así que estoy planeando usar CVS porque lo es;

  1. maduro

  2. luz en el lado del cliente (no copy prístina, muy importante para mí)

  3. Es una architecture basada en Servidor

  4. Código abierto, soy pobre

¿Hay algo completamente diferente que deba usar, una solución de respaldo, etc.? ¿Hay algún otro control de Versión que no sea CVS que cumpla con estos requisitos?

Mercurial con los files grandes es similar a git-annex w / the assistant. http://kiln.stackexchange.com/questions/4846/how-do-i-use-the-mercurial-largefiles-extension Está apropiadamente labelda como "característica de último recurso" porque rompe la D en DVCS (como hace git -annex), pero eso es lo que estás pidiendo. Funciona bien y es compatible con Fog Creek (la gente que le ofrece este sitio con una aproximación de primer order).

Pasé 10 años en CVS goulag. Te respeto por considerarlo, pero no quieres ir allí. La primera vez que alguien presiona ctrl-C durante un commit y deja tu repos en un estado medio comprometido y estás revisando ,v files tratando de deshacer el daño que querrás patearte. La primera vez que alguien quiere Contenido UTF-8 sin recordar hacer -kb o poner UTF-8 en nombres de file o (IIRC) intenta poner un espacio en un nombre de file, usted va a maldecir CVS.

Por lo que puedo decir, CVS no hace diffs binarys, pero almacenará cada binary para cada versión. Si eso (espacio de disco) es un problema, CVS no es el VCS adecuado para su uso previsto.

Es posible que desee echar un vistazo a git-annex . Utiliza Git para organizar información sobre files utilizando commits y branches, pero el contenido real del file no se almacena en el repository de Git, que le permite controlar el espacio utilizado por sus files. Es particularmente adecuado para administrar una colección de files grandes de forma distribuida.

El asistente de git-annex proporciona una buena interfaz sobre git-annex .

Una pregunta es un poco discutible, ya que no está claro si los clientes deben tener la capacidad de search versiones históricas arbitrarias de los files. Por lo tanto, estoy a punto de brindarle un set de opciones que podrían o no ajustarse a sus requisitos; Espero que esto al less sea capaz de proporcionarte algún tipo de insinuación …

Así que, aquí vamos:

  • git-annex es una solución que permite administrar un set de files enormes con Git sin mantenerlos realmente en los clientes.
  • Sparkleshare es un "Dropbox no propietario".
  • Plain rsync podría usarse para atraer la información a sus clientes de manera altamente efectiva.
  • rdiff-backup se puede usar como una variación de la primera: mientras trabaja generalmente en la forma en que lo hace rsync , es capaz de mantener un número arbitrario de "deltas" que representan estados pasados ​​del directory que se sincroniza, por lo que cualquier estado puede ser extraído / laminado de return. Los viejos deltas pueden ser purgados a voluntad.

    Esto se puede combinar con rsync : rdiff-backup se usa en el server, y la copy real que administra se ofrece a los clientes a través de rsync . Si se necesita una reversión, se restaurará otra versión en el server y los clientes la recuperarán usando rsync .

  • Un server bittorrent y clientes: este protocolo transfiere sus files utilizando fragments, por lo que si los cambios a los binarys están algo localizados, esto podría funcionar solo de manera correcta.