caching local para un repository github?

Usamos github para gestionar gran parte de nuestro entorno de software, y apuesto a que, como muchas otras organizaciones, la abrumadora mayoría del tráfico hacia / desde ese repository proviene de nuestra oficina. Con esto en mente, ¿hay alguna manera de build un caching local de un repository github dado, pero aún así tener la protección de la versión en la nube? Estoy pensando en esto en el model de un server proxy de caching, donde el server local (presumiblemente en nuestro edificio, en nuestra networking local) manejaría la gran mayoría de las operaciones de clonación / extracción.

Esto parece que debería ser factible, pero la búsqueda de esto ha sido muy difícil, creo que en gran parte porque las palabras "local" y "caching" han sobrecargado significados especialmente para preguntas git (hub).

Su último comentario deja en claro que está buscando una optimization del performance. Eso ayuda.

Puede comenzar a crear un reflection local del repository github siguiendo estas instrucciones . Puede actualizarlo periódicamente u organizar recibir ganchos web desde github para actualizar el duplicado local "a pedido". Para hacer esto, necesitarás configurar un pequeño service web que responda a los ganchos de github. Puede agregar un enlace web en https://github.com/someuser/someproject/settings/hooks/new . Probablemente desee seleccionar el button de opción "Permitir seleccionar events individuales" y luego seleccionar:

  • borrar
  • empujar
  • crear

Esto mantendría su caching actualizado con respecto a los cambios en las tags y twigs disponibles.

Configure un server git que haga que ese repository esté disponible localmente. Esto puede ser tan simple como ejecutar git daemon , o una count local accesible a través de ssh, o algo más completo, dependiendo de sus requisitos locales.

Luego, configuraría sus copys de trabajo locales de esta manera:

 $ git clone http://localrepository/someproject.git $ cd someproject $ git remote set-url --push http://github.com/someuser/someproject.git 

Esto configuraría cada repository para extraer de su caching local, pero los cambios push up a github.

Debería verificar el proyecto git-cache-http-server . Creo que implementa en parte lo que necesita (y es similar a la idea de la publicación de @larsks).

Es un software NodeJS que ejecuta un server HTTP para proporcionarle acceso a repositorys git almacenados en caching localmente. El server capta automáticamente los cambios en la cadena ascendente cuando sea necesario. Si usa esos repositorys git locales en lugar de los distantes, su cliente de git recibirá contenido en caching local.

Si ejecuta git-cache-http-server en un host diferente (VM o contenedor, por ejemplo), puede configurar su cliente local de git para clonar y recuperar automáticamente de la caching configurándola para replace https://github.com con algo como http://gitcache/github.com . Esto se puede lograr mediante una configuration como:

 git config --global url."http://gitcache:1234/".insteadOf https:// 

Por el momento, este software solo proporciona un caching para clonar y actualizar un repository, no hay ninguna disposition para hacer retroceder los cambios. Para algunos casos de uso, pensar en una infraestructura de CI que necesita extraer contenido de múltiples repositorys incluso cuando solo ha cambiado uno o las testings automatizadas que menciona, esto puede ser útil.