Cómo proporcionar files de trabajo paralelos a un repository de git simple

Antecedentes En nuestro recurso compartido de networking, tenemos algunos repositorys sin formatting que se usan para el intercambio de files (y control de versiones, etc.) durante el desarrollo. Desafortunadamente, sucede con bastante frecuencia que las personas que no están involucradas en la request de desarrollo accedan a solo un pequeño subset de files de este repository. Estos colegas a menudo no tienen git disponible.

Lo que necesito Por lo tanto, deseo proporcionar, paralelamente al repository desnudo, una copy siempre actualizada de los files de trabajo de mi repository simple. Estos files de trabajo no están destinados a ser cambiados.

¿Enfoques? ¿Tienes alguna idea de cómo abordar hábilmente este problema?

Sé que podría copyr los files completos cada vez que actualizo el repository, pero esto es costoso en time y tráfico. Esto parece ser una cosa tan básica …

En cualquier punto, puede exportar un file de una subcarpeta de un git repo (usando git archive ):

 git archive -o ../subarchive.zip HEAD:subdir 

De esta forma, solo tiene que copyr un file (file).

Puedes combinar eso con un gancho post-recepción, como vi hace 3 años :
Esto permite, en cada envío, archivar, copyr y descomprimir el file, para proponer una estructura de carpetas que refleje el estado más reciente de su repository.

Finalmente, estamos usando la siguiente solución: Tenemos un repository espejo no desnudo en el server desde el cual lo extraemos automáticamente cuando nuestro repository simple se actualiza, a través de un guión de actualización conjunta (Windows, lote):

 @echo off :: define server pathes set serverpath_bare=\\my_server_path\bare set serverpath_mirror=\\my_server_path\mirror :: make sure: :: + your latest changes are committed to your local repository :: + the repositories (bare and mirror) exist (eg via clone) :: + ... :: specify git server repository git remote add server \%serverpath_bare% :: update git server repository (1st: pull, 2nd: push) git pull --stat server master git push server master :: mirroring: bare -> mirror pushd %serverpath_mirror% git remote add server \%serverpath_bare% git pull --stat server master popd 

Esto resolvió todos nuestros problemas descritos anteriormente:

  • podemos distribuir enlaces al repository espejo
  • podemos usar el repository simple como repository central para el intercambio de files / trabajo set
  • las actualizaciones se hacen de forma incremental