2011-10-05 33 views
9

Estoy ejecutando mi propio repositorio git privado en un servidor privado en una instalación colo. Lo uso para proyectos privados que no puedo abrir. Yo uso github para todo mi trabajo de código abierto.¿Cómo mantener dos repositorios git sincronizados?

Desarrollo en una computadora de escritorio y en mi MacBookPro. A medida que realizo cambios en mis sistemas de desarrollo, presiono los cambios al origen en el colo y los llevo al otro sistema. Soy bastante bueno en mantener los tres sistemas actualizados en su mayor parte, principalmente para fines de respaldo y recuperación de desastres.

Ahora que BitBucket ofrece hosting git privado de forma gratuita, estoy considerando agregar un clon de mis proyectos allí. Además, entonces podría usar las características adicionales proporcionadas por BitBucket que mi barebones private git server no proporciona. Sin embargo, me gustaría continuar manteniendo una copia de los repos privados en mi servidor colo también para la redundancia de respaldo.

así que tengo un par de preguntas:

  1. sin cambiar mi proceso de desarrollo estándar (editar, añadir, comprometerse, empujar), ¿cómo puedo sincronizar automáticamente se compromete empujado a mi servidor a un proyecto bitbucket? Cada vez que presiono mi servidor git, me gustaría que esos commits sean automáticamente enviados a mi proyecto bitbucket. No quiero cambiar mi flujo de trabajo y me gustaría hacer los pequeños cambios necesarios a mis clientes de desarrollo.

  2. Si quiero usar bitbucket como mi repositorio principal de git, ¿cómo migro mis proyectos de mi servidor privado de git a bitbucket?

  3. Una vez que migro a bitbucket, me gustaría otra copia de seguridad en mi servidor. ¿Cómo puedo hacer commits automáticamente para que Bitbucket sea enviado a mi servidor git? Esto es básicamente el reverso de la pregunta 1.

Respuesta

7

Para el n. ° 1, la solución más fácil es usar un gancho en el repositorio remoto que empuja automáticamente a BitBucket.

Para # 2: Simplemente agrega bitbucket como control remoto y empuje hacia él en lugar de su origen. Si tiene alguna rama de seguimiento (marque .git/config), cambie remote = origin al nombre que utilizó para bitbucket. Otra solución sería eliminar/cambiar el nombre de su control remoto existente origin y agregar bitbucket como origen.

Para # 3: un cronjob ejecutando git fetch es probablemente la forma más fácil de hacer esto.

+0

¡Gracias, intentaré con tus sugerencias! – Tauren

+0

@Tauren: ¿algún comentario sobre este tema? – Tohid

+0

# 1: http://stackoverflow.com/questions/5769568/how-to-set-up-a-git-hook-so-that-after-pushing-to-ssh-peterfoo-com-bar-com –

Cuestiones relacionadas