dropbox-style svn / git / mercurial ?: auto-commit al momento del cambio y auto-checkout

No soy un progtwigdor profesional, pero hago algunos pequeños proyectos en solitario y me gustaría algunas versiones y synchronization, pero pasar por el process de recordar comprometerme y pagar (en diferentes computadoras) es más una molestia que, por ejemplo, mantener código en una carpeta de Dropbox que se carga automáticamente en la nube al cambiar el file. Usar la copy actual es completamente transparente para mí, pero no hay control de versiones. (Sincronizar también es un problema porque a menudo no abro mi laptop por días después de llegar a casa).

¿Hay alguna manera de que una base de código se confirme automáticamente al cambiar el file (o cada pocos minutos) y download automáticamente la última versión si deseo continuar mi trabajo desde otra computadora?

¡Gracias!

Depende de cuáles sean tus "proyectos".

Flashbake fue creado después de que el escritor de ciencia ficción Cory Doctorow quisiera capturar y versionar automáticamente su process de escritura a intervalos regulares:

Cada 15 minutos, Flashbake mira cualquier file que pidas que verifique (lo tengo viendo toda mi ficción en progreso, mi list de tareas pendientes, mi file de bits de información útiles y las versiones electrónicas completadas de mis libros recientes ), y registra cualquier cambio realizado desde el último control, anotándolos con la zona horaria actual en el reloj del sistema, el clima en esa zona horaria como extraído de Google y los últimos tres titulares con su línea debajo de ellos en el RSS de su blog feed (he estado caracterizando esto como "¿Dónde estoy, cómo está allí y en qué estoy pensando?"). También registra el time de actividad de su computadora. Para una versión futura, creo que sería divertido tener las tres canciones más recientes reproducidas por tu reproductor de música. ( fuente )

Está basado en git para el control de versiones, y cron para actualizaciones automáticas (git es lo suficientemente eficiente en cuanto a espacio para hacer que esto sea manejable). Es posible que desee consultar otra revisión . El código está aquí .

Si realmente deseas una detección de modificación de files en lugar de un commit cada X minutos (también conocido como paranoico sobre los datos), es posible que desees algo basado en inotify ( detalles : ¡ten en count que las confirmaciones automáticas pueden sumrse rápidamente!).

Sin embargo, otra opción (que no necesariamente resuelve la pregunta de autocompromiso, por lo que es posible que desee mezclar) es ver ejecutar git en Dropbox. Esto ya ha sido discutido aquí en SO .

Dropbox mantiene pocas versiones de files en la historia. Apenas se le puede llamar "control de versiones", pero puede restaurar files hace algún time.

Si realmente no puedes molestarte en comprometerte y fusionarte, diría que solo en vivo con Dropbox, ya que es agradable y automático.

Puede configurar una tarea progtwigda (si está en Windows) o una tarea cron (si es Linux) que hará una confirmación / inserción cada 5 minutos. Y tire / actualice cada vez que inicie su computadora. Pero puedo ver una posible pesadilla esperando que ocurra, especialmente en pull / update, cuando se requiere la fusión manual.

Además, aconsejo utilizar Mercurial, ya que es mucho más fácil de aprender / tratar que git y más avanzado que svn. Esto quitará algo de dolor del sistema de control de versiones.

Entonces, lo que terminé haciendo fue usar btsync para sincronizar mis bases de código entre varias computadoras. Esto crea la característica inmediata de 'auto synchronization' que estaba buscando y es completamente transparente para mí. (Esto también soluciona los problemas que implican los autocompromisos inflados como se mencionó anteriormente). Pero un consejo: no intente sincronizar los repos en todas sus computadoras. Aunque esto es posible, me resultó innecesario y es mejor simplemente sincronizar los files, y mantener un repository en una máquina remota para confirmar y enviar si es necesario. De esta forma obtendrás versiones y synchronization automática (o te obligarás a cometer diariamente, o te preocupes por tener que comprometerte cuando necesites abandonar tu computadora, o tendrás que lidiar con cualquier error de confirmación que ocurra antes de cerrar tu computadora portátil, o la mayoría de todos tenemos que confiar en la memory falible de uno para recordar cometer diariamente (¡uno grande para mí!)).