Usar GIT para implementar la funcionalidad de tipo Dropbox

Me gustaría implementar un mecanismo para sincronizar files en varias máquinas. No me preocupan especialmente los files que tienen más de 1 mes, por lo que no es necesario mantener esos datos.

Git parece hacer casi todo esto, excepto para eliminar las revisiones anteriores. ¿Hay algún command destructivo que me permita decir "¿Matar todas las revisiones anteriores a X"? O si hay otra herramienta de VCS que pueda usar para lograr lo mismo, estaría muy interesado.

No necesitas implementar eso tú mismo. Ya se ha hecho: http://sparkleshare.org/

También vea "asistente de git-annex" y "sharebox" .

Cuando se trata de synchronization, el git bundle es interesante porque:

  • solo crea un file (fácil de copyr), que es como un repository git (puede clonar / extraer de un package)
  • puede crear un package incremental (el primero es un package completo, que puede usar incrementales, para seleccionar solo los últimos commits, en lugar del historial completo)

Sin embargo, el repository del otro lado recibiría todas las confirmaciones, a través de las tiradas de los packages sucesivos.

Con respecto a los packages incrementales, la página man del git bundle :

 <git-rev-list-args> 

Una list de arguments, aceptable para git rev-parse y git rev-list (y que contiene una reference nombrada, consulte ESPECIFICAR REFERENCIAS a continuación), que especifica los objects específicos y las references para el transporte.
Por ejemplo, master~10..master hace que la reference maestra actual sea empaquetada junto con todos los objects agregados desde que se haya confirmado su 10 ° ancestro.

Mientras que una list de --since=30.days.ago master como --since=30.days.ago master sería posible, es mejor asegurarse de que el package incremental sea comstackdo teniendo en count el último compromiso utilizado por el último package (especialmente si ese último compromiso es anterior de 30 días. Si es más nuevo, entonces no importa si toma "demasiados" commits).