2010-02-20 12 views
5

Tengo una necesidad de codificar desde dos computadoras durante la semana. ¿Cuál es la mejor manera de sincronizar las dos computadoras (mac)? Empecé a usar el control de fuente, como SVN. Funciona bastante bien, excepto que a veces controlo el código que quiero sincronizar, pero no compilan e interfieren con otras personas del equipo que trabajan en el mismo proyecto.¿Cuál es una buena manera de sincronizar archivos de código entre computadoras?

No quiero utilizar la rama. No tendría sentido ramificar todas las noches cuando regrese a casa de la oficina.

Respuesta

5

Puede verificar su código en una bifurcación en lugar de hacerlo en el maletero. Luego obtendrá todos los beneficios del control de versiones sin molestar a otras personas con sus errores de compilación.

Hay una descripción de cómo ramificar en subversión here.

+1

Pero yo quiero woudln't ramificar cada noche. – erotsppa

+0

@erotsppa: la ramificación es una tarea bastante sencilla: solo hace una copia idéntica del proyecto (excepto que la copia no se realiza realmente en el servidor). Afortunadamente, no tienes que ramificar todas las noches de todos modos: una vez que hayas creado la rama, puedes cambiar a esa rama cuando quieras. –

0

Pruebe usar branches en su repositorio svn. O puede usar iDisk si tiene una suscripción de MobileMe.

+0

Dropbox> iDisk – Sharpie

5

Otras buenas maneras son Mercurial o GIT.

Son similares a lo que está tratando de lograr, excepto que estos son DSCM (distribuidos) por lo que no tendrá que configurar un servidor completo solo para esto.

Asegúrese de hacer una ACTUALIZACIÓN antes de COMPROBAR EN su código, y después de ACTUALIZAR asegúrese de que su proyecto se construya.

+0

Puede decir que hacen que la bifurcación sea tan fácil y simple, que no le importe crear y fusionar varias ramas todos los días. –

+0

+1 para esto también. Solo sugerí SVN porque eso es lo que ya está usando y ya tiene una configuración de servidor SVN, por lo que podría ser un paso más pequeño para él aprender a ramificarse en SVN que a un sistema completamente nuevo. Pero aprender git valdría la pena. También hay integración entre SVN y Git. –

1

Siempre debe asegurarse de que su código se cumple antes de enviarlo a SVN. Antes de comprometerse, debe hacer una actualización y realizar cualquier combinación necesaria. En algunos equipos que conozco, hay una multa por cometer un código que no se puede cumplir.

0

Existen algunas reglas sencillas que debe cumplir si no quiere interferir con el código que otros desarrolladores deben compilar también.

  • Crear su propio SVN branch que sólo se trabaja en y comprometerse a
  • Siempre que una parte de su código está listo para ser compartido con otros desarrolladores (o listo para el lanzamiento), combinar los cambios de nuevo en la rama principal ("troncal")
  • O si no desea utilizar las ramas: asegúrese de que su programa se compila y las pruebas de la unidad tienen éxito antes de comprometerse. De esa forma, habrá menos enfrentamientos con el código de otras personas.
+0

Definitivamente iré con la sugerencia de Branching. Si no se bifurca, y en su lugar siempre espera para asegurarse de que las pruebas de su unidad pasen antes de comprometerse, es posible que espere mucho tiempo entre las confirmaciones, lo cual es un mal hábito (cuanto más pequeñas, más detalladas sean sus confirmaciones, más fácil es revertir los cambios, y con más mensajes de compromiso, con suerte, se documenta mejor). – jbrennan

2

¿Has probado Dropbox? básicamente configura una carpeta que atravesará varias PC ejecutando la aplicación y guarda las versiones de los archivos; sin embargo, nunca lo he cansado en un entorno de programación

2

Con mercurial (hg) o git no necesita un servidor de control de versiones. Puede sincronizar a través de una llave usb, paquetes enviados por correo o un servidor iniciado temporalmente ("hg serve"). De esta forma, nadie más sabrá nunca de ningún servidor de control de versiones y no interferiría con los miembros de su equipo. Tanto hg como git pueden interactuar con la subversión (aunque no sé qué tan bien lo hacen).

3

Usa algo como Microsoft Foldershare (ahora llamado Live Sync). Es gratis y funciona bien en Mac.

No utilice el control de fuente para esto. En mi Mac, he usado FolderShare de Microsoft en el pasado, y funciona muy bien.Cada vez que guardo un archivo, en 2-3 segundos los cambios se propagan a todas las máquinas sincronizadas. La única advertencia es que no hay una nube, por lo que ambas (o al menos una permanente) deben estar en línea al mismo tiempo. FolderShare no funciona para bibliotecas MP3 gigantes, pero funciona bien para árboles de código.

-1

soluciones que funcionan Cheater:

  1. mi preferido: sencilla e-mail, acabo una carpeta .zip con frecuencia y enviarla por correo electrónico a mí mismo. Si mi computadora muere, no hay problema porque también uso "Dejar correo en el servidor" para cuentas POP3. Por lo tanto, obtengo copia de seguridad y control de versiones juntos.

  2. utiliza una unidad flash. Trabaje desde la unidad flash y haga una copia de seguridad en su disco duro, o viceversa.

Los dos métodos anteriores funcionan muy bien para un solo desarrollador utilizar varios equipos.

Editar: Vaya, perdéese el aspecto de equipo. La solución de correo electrónico aún funciona pero con un equipo el control de origen es mejor porque varias personas están destruyendo el mismo código. Encuentro TFS y Visual Source Safe soluciones menos que perfectas. El problema con los sistemas de control de origen es la curva de aprendizaje para dominarlos. Desafortunadamente, en un ambiente de equipo, esa es una tarea necesaria.

0

Me encanta Microsoft Live Mesh, es fácil de usar, solo selecciona una carpeta para sincronizar y listo.

2

Creo que mucha gente está complicando esto. La solución es obvia Simplemente use un dispositivo USB portátil y tenga allí su directorio de pago. Para su escenario dado, eso tendría mucho sentido.

+0

+1 también aquí: esta es una solución muy simple que parece suficiente para lo que el OP necesita. ¡Pero si elige no comprometer su código, asegúrese de no perder la unidad USB! –

0

Utilice Fuse and sshfs para montar los directorios pertinentes en su máquina de trabajo en su máquina en casa.

2

Usar git. Tiene todos los beneficios del sistema de control de versiones, pero trabaja localmente. Si su código de proyecto ya está en SVN, es posible usar git-svn para hacer que tanto git como svn colaboren. Here's an easy to follow guide on git-svn by example.

Con git es fácil de ramificar, por lo que querrá ramificarse muy seguido. Las ramas de Git son diferentes de las ramas de SVN: se almacenan localmente y no es simplemente una copia de todo tu proyecto, como en SVN. Finalmente, configure Dropbox en ambas computadoras para que sus cambios se sincronicen automáticamente.

lo tanto el flujo de trabajo podría ser algo como esto:

  • git-svn clone http://mysvnrepo local_dir para obtener su repositorio local
  • git checkout -b my_new_branch cuando se quiere trabajar en una nueva característica
  • Comprobar en el código tan a menudo como sea necesario , sin preocuparse por romper el código de otras personas
  • Los cambios locales se mantienen sincronizados automáticamente gracias a Dropbox
  • Cuando su código está listo, fusionarla a la rama principal con git merge my_new_branch
  • Y sus cambios de vuelta al depósito de la subversión, actualizar primero su repositorio local con git-svn rebase y luego comprometerse con git-svn dcommit
Cuestiones relacionadas