Cómo usar Git como networking de distribución de contenido

El libro 'Git Internal' menciona el uso de git como networking de distribución de contenido de igual a igual en p50, pero no tiene muchos detalles. Especialmente cómo tener varias twigs que tienen seguimiento de diferentes files. Ejemplo:

(directory de trabajo) a00.exe a01.exe b00.exe c00.exe c01.exe c02.exe

La twig maestra realiza un seguimiento de todos los files, mientras que la twig A solo rastrea a00.exe y a01.exe, la twig B rastrea b00.exe y así sucesivamente. La próxima confirmación actualizará a00.exe b00.exe c00.exe. ¿Cómo crear twigs como esta? Una vez que todas las twigs se hayan comprometido, ¿solo puedo recuperar cierta twig desde remoto? ¡Gracias!

Necesitarás tener un script de algún tipo para comstackr las diversas twigs de contenido para ti. La forma básica de hacerlo es agregar el contenido a la database (en su caso, simplemente enviándolos a la twig principal), luego en un índice temporal, leyendo en todos los contenidos que desea tener en cada twig (git read -tree / git update-index), escribiendo ese tree out (git write-tree), escribiendo un object commit (git commit-tree) y actualizando la twig a esa nueva confirmación (git update-ref). Estos son todos los commands de fontanería que normalmente no se utilizan en las operaciones diarias, pero que le permiten crear instantáneas sin tener todos los contenidos en un directory en el disco al mismo time.

Un script de ejemplo para hacer algo como esto está aquí:

http://github.com/schacon/gitcrazy/blob/master/update_content.rb

Aquí defino una cantidad de serveres que tienen uno o más roles ('memcache', 'database' o 'webserver'). Entonces puedo agregar contenido a un rol como este:

$ update_content.rb /path/to/content file_name memcache 

Eso agregará el contenido a mi git db y luego actualizará las twigs de los serveres afectados (que tienen el rol de Memcache, en este caso). Puedo hacer eso para múltiples files para cualquiera de los roles y git hará un seguimiento del contenido que debe tener cada server. Luego, cada server puede search su twig específica ('server / s1', 'server / s2', etc.).

Estoy pensando en hacer un screencast rápido demostrando esto pronto, espero que el script de ejemplo sea útil. Debería ser bastante fácil correr y descubrir qué está pasando. En el mismo proyecto, hay una secuencia de commands 'list' que enumera qué contenido está en cada twig del server.

Hubo un video / charla sobre ese tema por el autor de git interna, scott chacon, quien habla sobre una networking de distribución de contenido para anuncios en algún tipo de centro comercial. inspirador: http://www.techscreencast.com/language/ruby/using-git-in-ruby-applications—scott-chacon-/1431

Intereting Posts