2012-07-16 8 views
7

Tengo un repositorio git remoto con gran historial y canal de conexión lenta. ¿Dónde están algunos usuarios locales, y lento empujar/tirar después de grandes compromisos o la clonación desde cero para los nuevos usuarios son un gran problema, ahora. Quiero crear un reflejo local de él. Los cambios locales se deben comprometer con el repositorio local y sincronizar con el control remoto en segundo plano. Entiendo que este problema está en demanda, pero aún no he encontrado ninguna solución (no soy administrador de repositorio remoto, simplemente intento simplificar el trabajo local con él).espejo local Git

+0

Esta publicación anterior le ayudará a lograr un espejo de un repositorio remoto http://stackoverflow.com/questions/3959924/whats-the-difference-between-git-clone-mirror-and-git-clone-bare –

+1

¿Solo se están comprometiendo sus usuarios locales con el repositorio remoto lento o hay otras personas en otro lugar que están trabajando? –

+0

@honk Sí. Los usuarios locales que realizan el 99% del trabajo, los usuarios remotos necesitan acceso de solo lectura (o con confirmaciones muy raras). Creo que la velocidad de la sincronización de fondo local remota será apropiada para los usuarios remotos, creo que deben tener un retraso si la sincronización aún no ha finalizado. – exbluesbreaker

Respuesta

3

Dado que escribe en los comentarios que las personas detrás de la conexión lenta harían la mayor parte del trabajo, le sugiero que configure el sitio remoto lento para que sea un espejo de su repositorio local contra el que se comprometería.

En primer lugar hacer un clon desnuda de distancia lento en un servidor local

$ git clone --bare git://slow/repo.git 

Usted gente local ahora solo debería comprometerse a que el clon, no el lento remoto.

luego configurar una tarea programada o algo similar para empujar cambios en tu repositorio local en el sitio lento con

$ git push origin --mirror 

Mediante el uso de --mirror le dice a Git que empujar todas las ramas y etiquetas.

+0

¡Gracias! Lo pruebo para mi prueba github repo y funciona. El clon completo del repositorio remoto real toma 20 horas o más, y aplico esta solución en un futuro cercano. – exbluesbreaker

+0

Encontré que esta solución eliminará todos los cambios realizados en el repositorio remoto sin acceso a través de la duplicación local. ¿Hay alguna forma de fusionar los cambios? Comprometerse con el repositorio remoto es raro, pero no quiero perder dichos commits. P.ej. Por primera vez, algunos desarrolladores locales pueden continuar realizando confirmaciones de repositorio remoto directamente por error. – exbluesbreaker

+0

@exbluesbreaker: podría soltar el '--mirror', pero luego debería especificar qué rama desea insertar, p. Ej. 'git push origin master'. Entonces probablemente también quieras agregar '--tags' al push para insertar etiquetas. '--mirror' presionará todas las ramas y etiquetas locales, por lo que hace todo esto automáticamente (pero sobrescribirá los cambios remotos). –

1

Usted debe ser capaz de hacer clones de poca profundidad con

git clone --depth=20 url-to-your-repo some-path 

Esto debería permitir que se moleste con la mayor parte de la historia.

Cuestiones relacionadas