La forma más inteligente de tomar un file de GitHub a través de la API REST o Ocktokit (Ruby)

Nuevo usuario de Git aquí, que almacena documentos XML (cada uno de los cuales representa los metadatos de un informe) en GitHub:

#Repo: My-Reports Report1 Report2 Report3 

Necesito la capacidad de extraer (no en el sentido Git de la palabra) un único file (como Report2) del repository a un cliente arbitrario. Ser capaz de extraer Report2 con una label específica es una ventaja.

No quiero clonar el repository para el cliente y hacer un verdadero git pull porque no estoy haciendo SCM en esta caja y no quiero instalar binarys. Solo necesito el documento, punto.

Veo que la API GITHub REST tiene un método Get Archive que downloadá un tarball / zipball de todo el repository:

  GET /repos/:owner/:repo/:archive_format/:ref 

http://developer.github.com/v3/repos/contents/#get-archive-link

Creo que puedo seguir este path, pero me obligará a gestionar el "process de recuperación de documentos" (codificar la tarea de descomprimir el file y extraer lo que necesito). Me gustaría evitar eso si puedo … .Pero, por lo que sé, el documento se comprimirá sin importar cómo lo pida y solo tengo que vivir con él … como dije, Git & GitHub newb.

¿Hay alguna forma más inteligente / mejor de abordar esto? Estaré en Ruby, así que también podría usar la gem Ocktokit.

Muchas gracias

En octokit gem de octokit , sugiero que use el método de contents siguiente manera (por ejemplo, usar mi propio repository y demostrar que tira de una label específica, pero se puede usar cualquier reference de git):

 require 'octokit' require 'base64' api_response = Octokit.contents 'neilslater/games_dice', :ref => 'v0.0.1', :path => 'README.md' text_contents = Base64.decode64( api_response.content ) File.open( 'README.md', 'wb' ) { |file| file.puts text_contents } 

Esto está limitado a files de hasta 1 MB de tamaño máximo. Tenga en count que aquí he omitido posibles problemas con la encoding de caracteres: si desea manejar text_contents una memory, necesitará saber la encoding correcta que debe usar y aplicarla. Cuando acaba de escribir el file, lo más simple es agregar el indicador 'b' al abrir el file.