git diff d'heroku

J'ai déployé un bot de feu de camp sur heroku (application de sinatra en utilisant tinder pour écouter la salle de feu de camp), et je voudrais l'interroger pour le git diff entre ce qui est déployé sur une autre application heroku et ce qui est dans notre repo github. Si je faisais cela localement, je voudrais juste

  1. cloner le repo github
  2. Ajouter la télécommand d'heroku
  3. Exécuter un git diff request

Sur heroku, cependant, je suis limité à avoir seulement un directory tmp (sur bamboo) ou un système de files éphémère (sur cedar), et aussi la difficulté de gérer les keys ssh pour l'user que l'application fonctionne.

Comment puis-je accomplir cela sur heroku, de preference être capable de montrer les résultats dans un format d'tree?

Solutions Collecting From Web of "git diff d'heroku"

Je vais supposer que vous n'êtes pas heureux avec le système de files éphémère de cèdre en ce que les files se perdent chaque redémarrage dyno et ne sont pas visibles cross-dyno. Accepter ces contraintes serait évidemment la solution la plus simple (chaque dyno pourrait avoir à créer son propre git repos, mais ce serait le cas).

La deuxième solution la plus directe serait d'avoir le log git calculé ailleurs. Vous pourriez écrire une petite application ressemblant à un service web (peut-être avec Sinatra) qui acceptait deux urls de référentiel, et renvoyait leur diff. Et puis vous pouvez interroger cela à partir de l'application heroku. Mais je suppose que c'est exclu puisque vous requestz de le faire "sur Heroku".

Ce qui nous amène à la dernière solution; cela implique de tout créer en memory; le dossier initial devrait être créé avec quelque chose comme FakeFS et le contrôle git devrait être fait à partir de ruby ​​nativement; La fourche à gravier de Scott Chacon a fait des appels natifs au lieu de bombardements, donc ça pourrait marcher (je ne sais pas si les changements de Chacon ont été portés au grain principal). De cette façon, tout l'access au système de files serait fait à partir de ruby, et tout serait en memory (vous pourriez vouloir mettre à jour votre memory, d'ailleurs)

Je n'ai pas personnellement essayé l'un de ceux-ci, je ne sais pas comment ils se comporteraient bien.

Si vous avez besoin de persistance, peut-être que vous pouvez rassembler le tout dans / depuis votre database, mais cela semble être un gros problème.

J'espère que ça aide.

De l'assistance Heroku:

jd, juil-18 15:18 (PDT): Salut Ben,

Oui, vous pouvez utiliser tmp / on Bamboo ou le système de files éphémère sur Cedar. Généralement, le problème avec l'utilisation de git pour accéder aux référentiels externes est la key privée ssh. Vous devrez l'inclure avec votre application. Vous devrez également définir la variable GIT_SSH pour indiquer à git comment utiliser cette key, par exemple:

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

Un peu d'expérimentation et vous devriez être capable de le faire fonctionner.

Les hooks post-deployment peuvent également être utiles : http://devcenter.heroku.com/articles/deploy-hooks

Bonne chance!

À la vôtre, JD