¿Se puede usar Ruby Octokit (API de GitHub) para realizar cambios directamente en un repository de GitHub?

Me gustaría utilizar la gem Ruby octokit para aplicar cambios a un repository GitHub. Esta sería Ruby 2 (no Rails).

He utilizado la API para autenticar y observar objctes confirmados existentes: treees y blobs. Lo que no entiendo es cómo hago para actualizar, agregar y eliminar partes del repository.

Usando la herramienta de command-line git , cloné el repository, copié los files cambiados en la parte superior y luego hice un git add -A . en el nivel superior antes de comprometer y empujar el cambio. Hacerlo de esa manera es bastante sencillo. He escrito un código de Ruby que hace esto a través de llamadas al sistema a las herramientas git subyacentes.

Sin embargo, me gustaría entender la API y realizar las actualizaciones directamente sin clonación y empuje. He leído algunos antecedentes aquí y aquí que demuestran que es posible, pero solo llegan a agregar un solo file.

Escribí un código para recorrer el directory y cargar blobs para todo, esperando que no importara cuando esos blobs computaran el mismo valor de sha. Pero creo que esto es realmente ineficiente y debe haber una forma mejor, tal vez comparando los valores de sha localmente antes de publicarlos. O tal vez la API incluye un equivalente a git add -A que me he perdido.

Si alguien sabe cómo hacer esto o puede señalarme los ejemplos apropiados que podrían ayudar. Voy a publicar una respuesta yo mismo cuando lo resuelva.