2012-07-04 11 views
5

En el trabajo usamos svn en el servidor pero estoy usando git localmente (a través de git-svn) para hacer uso de la velocidad/ramificación/confirmaciones que no están listas para compartir, etc.Cómo mantener un repositorio git de respaldo sincronizado con uno local, "git push --mirror" o "actualización remota git"

Esto está funcionando bien, pero me incomoda tener cambios en mi computadora por días en caso de que algo salga mal, y me gusta tener un repositorio de copia de seguridad privado en nuestro archivo compartido.

he creado una copia de mi repo local usando un comando como este:

git clone --mirror MyRepo z:/MyRepo.git 

y han añadido esto como un control remoto para mi local con esto:

git remote add backup z:/MyRepo.git 

¿Cuál es la mejor forma de mantener el repositorio de copia de seguridad en sincronía con mi local al final del día?

Creo que es uno de los siguientes, pero no sé si son equivalentes o si no cuáles son las compensaciones.

  1. En repositorio local: git push --mirror backup

  2. O en la copia de seguridad del repositorio: git remote update

O incluso si hay una manera mejor?

+0

Algo así como un rsync nocturno de su directorio .git dentro de un trabajo cron podría ser más apropiado que usar git como una solución de respaldo. Si está buscando un método manual, 'git push --mirror' lo hará en un repositorio simple. – meagar

+0

@meagar lamentablemente, todos tenemos computadoras portátiles que deben estar cerradas todas las noches, así que no puedo obtener el trabajo de cron. Actualmente haciendo lo de git push, solo quiero saber si la opción 2 es esencialmente la misma. – Argos

+0

Uso 'git push --mirror backup' (la copia de seguridad es mi copia de seguridad remota git repo). Luego uso una secuencia de comandos que escribí si necesito restaurar desde esa copia de seguridad que ejecuta 'git fetch backup refs/remotes/*: refs/remotes/*' así como algunos git-svn resync cosas (ya que no quiero tiene que analizar todo el servidor SVN, ya que me llevó un par de días llevar todos mis proyectos a puerto y solo me lleva unos minutos, si es eso, conseguir que se clone y actualice desde mi copia de seguridad). –

Respuesta

0

Si tiene acceso al servidor con el repositorio SVN, puede usar el siguiente esquema: instale SubGit en el repositorio SVN (se creará un repositorio Git en el servidor que estará constantemente sincronizado con el repositorio SVN, puede considerarlo como una interfaz de Git para el repositorio SVN). Luego solo usa la interfaz Git pura (pull, push) en lugar de git-svn, como si siempre fuera un repositorio de Git. Todos los cambios se sincronizarán automáticamente con SVN. Este enfoque es un poco diferente de lo que describes porque tienes el espejo en el servidor directamente, pero podría ser interesante para ti.

+0

Me temo que no tengo acceso al servidor SVN, habría sido una buena solución. – Argos

Cuestiones relacionadas