git diff de heroku

Desplegué un bot de fogata en heroku (aplicación de sinatra usando yesca para escuchar la sala de la fogata), y me gustaría preguntar por la diferencia de git entre lo que se implementó en otra aplicación heroku y lo que hay en nuestro repository github. Si estuviera haciendo esto localmente, solo

  1. clonar el repository github
  2. Agregue el control remoto heroku
  3. Ejecutar un git diff siempre que se solicite

En heroku, sin embargo, estoy limitado a tener solo un directory tmp (en bambú) o un sistema de files efímero (en cedro), y también tengo la dificultad de administrar las keys ssh para el usuario con el que se ejecuta la aplicación.

¿Cómo puedo lograr esto en heroku, preferiblemente ser capaz de mostrar los resultados en un formatting de tree?

Voy a suponer que no estás contento con el efímero sistema de files de cedro, ya que los files se pierden cada reinicio de dinamo y no son visibles en el dinamómetro cruzado. Aceptar esas restricciones obviamente sería la solución más simple (cada dinamómetro debería crear sus propios repositorys git particulares, pero eso sería todo).

La segunda solución más directa sería tener el logging de git calculado en otro lugar. Podrías escribir una pequeña aplicación tipo service web (tal vez con Sinatra) que aceptara dos URL de repository y devolviera su diff. Y luego puedes consultar eso desde la aplicación heroku. Pero supongo que esto está descartado ya que estás pidiendo que lo hagas "en Heroku".

Lo que nos lleva a la última solución; implica crear todo en la memory; la carpeta inicial debería crearse con algo así como FakeFS y el control de git tendría que hacerse desde ruby ​​de forma nativa; El tenedor de Scott Chacon hizo llamadas nativas en lugar de bombardeos, por lo que podría funcionar (no sé si los cambios de Chacon se trasladaron a la arena principal). De esta forma, todo el acceso al sistema de files se haría desde ruby, y todo estaría en la memory (es posible que desee actualizar su memory, por cierto)

No he probado personalmente ninguno de estos, no sé qué tan bien funcionarían.

Si necesita persistencia, tal vez pueda orderar todo en su database, pero eso parece ser un montón de problemas.

Espero que esto ayude.

De la ayuda de Heroku:

jd, Jul-18 03:18 pm (PDT): Hola Ben,

Sí, puedes usar tmp / en Bamboo o el sistema de files efímero en Cedar. En general, el problema con el uso de git para acceder a repositorys externos es la key ssh privada. Deberás include esto con tu aplicación. También deberá establecer la variable GIT_SSH para indicarle a git cómo usar esa tecla, por ejemplo:

GIT_SSH = "ssh -i / app / doc / id_rsa $ @"

Un poco de experimentación y deberías poder hacer que funcione.

Los ganchos posteriores a la implementación también pueden ser de alguna ayuda: http://devcenter.heroku.com/articles/deploy-hooks

¡Buena suerte!

Cheers, JD