2011-08-15 17 views
8

No soy un programador profesional, pero hago algunos pequeños proyectos en solitario y me gustaría algunas versiones y sincronización, pero pasando por el el proceso de recordar comprometerse y finalizar la compra (en diferentes computadoras) es más complicado que, por ejemplo, mantener el código en una carpeta de Dropbox que se carga automáticamente en la nube al cambiar el archivo. Usar la copia actual es completamente transparente para mí, pero no hay control de versiones. (La sincronización también es un problema porque a menudo no abro mi computadora portátil durante días después de llegar a casa.)Dropbox-style svn/git/mercurial ?: autocompromiso al cambiar y auto-checkout

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

Gracias!

+0

¿Por qué querrías hacer esto? ¿Qué sucede cuando cambias tu código y accidentalmente rompe algo, pero lo notas una semana después? Será un dolor más grande volver a través de todas las confirmaciones automáticas que recordar comprometerse después de que haya terminado de trabajar para el día, ya que tiene tantas versiones para pasar, IMO. – CamelBlues

+0

No podría estar más de acuerdo, @CamelBlues. El control de versiones es casi completamente inútil sin las anotaciones que agrega en los mensajes de confirmación y la elección de los lugares lógicos para realizar confirmaciones, como la finalización de una función o corrección de errores. –

+0

posible duplicado de [Hacer git auto-commit] (http://stackoverflow.com/questions/420143/making-git-auto-commit) – 79E09796

Respuesta

0

Así que 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 sincronización' 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 archivos, y mantener un repositorio en una máquina remota para confirmar y enviar si es necesario. De esta forma obtendrás versiones y sincronización 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 memoria falible de uno para recordar cometer diariamente (¡uno grande para mí!)).

1

Dropbox conserva pocas versiones de archivos en el historial. Apenas se le puede llamar "control de versiones", pero puede restaurar archivos hace algún tiempo.

Si realmente no puede molestarse en comprometerse y fusionarse, diría que solo en vivo con Dropbox, ya que es agradable y automático.

Puede configurar la Tarea programada (si está en Windows) o la tarea cron (si es Linux) que realizará 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 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.

5

Depende de lo que sean sus "proyectos".

Flashbake fue creada después de escritor de ciencia ficción Cory Doctorow quería capturar de forma automática y la versión de su proceso de escritura a intervalos regulares:

Cada 15 minutos, Flashbake mira a todos los archivos que usted le pide que compruebe (I ver toda mi ficción en progreso, mi lista de tareas pendientes, mi archivo de información útil y las versiones electrónicas completadas de mis libros recientes), y registra los cambios realizados desde el último control, anotándolos con la corriente zona horaria en el reloj del sistema, el clima en esa zona horaria extraída de Google, y los últimos tres titulares con su línea debajo de ellos en la fuente RSS de su blog (he estado caracterizando esto como "¿Dónde estoy, qué? ¿Es como allí, y en qué estoy pensando? "). También registra el tiempo 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. (source)

Se basa en git para el control de versiones, y cron para actualizaciones automáticas (GIT es suficientemente eficiente con el espacio para hacer de este manejable). Es posible que desee consultar another review. El código es here.

Si realmente, realmente quiere presentar detección de modificaciones en lugar de una confirmación cada X minutos (. Aka paranoico sobre los datos), es posible que desee something based on inotify (details - Nota esas confirmaciones automatizadas pueden sumar rápidamente!).

Otra opción (que no necesariamente resuelve la pregunta de autocompromiso, por lo que es posible que desee mezclar) consiste en ejecutar git en Dropbox. Esto tiene already been discussed here on SO.

+0

. Muy buena respuesta de lo contrario, pero inotify es tan poco intensiva en recursos como puede ser. El proceso está completamente dormido hasta que su editor realiza una llamada de 'escritura' al sistema operativo. Por supuesto, si guarda tantas veces como yo, esas confirmaciones se sumarán rápidamente, si eso es lo que quiere decir. –

+0

@Karl: sí, esto es precisamente lo que quise decir. Buena atrapada. Editado para reflejar eso. – huitseeker

Cuestiones relacionadas