331 votes

comment pousser locales différentes branches git à heroku/master

Heroku a pour politique de faire abstraction de toutes les branches, mais "maître".

Alors que je suis sûr que Heroku, les designers ont d'excellentes raisons de cette politique (je suppose pour le stockage et l'optimisation de la performance), la conséquence pour moi en tant que développeur, c'est que quel que soit local, thème de la branche que je travaille, je voudrais un moyen facile de passer Heroku du maître pour que local thème de la branche et de faire un "git push heroku -f" à la sur-écriture maître sur Heroku.

Ce que j'ai eu à la lecture de la "Pousser Refspecs" section de http://progit.org/book/ch9-5.html est

git push -f heroku local-sujet-branche:refs/heads/master

Ce que j'aimerais vraiment est une façon de configurer ce paramètre dans le fichier de configuration de sorte que "git push heroku" toujours au-dessus, en remplaçant local-sujet-branche avec le nom de quelle que soit ma branche actuelle arrive d'être. Si quelqu'un sait comment y parvenir, s'il vous plaît laissez-moi savoir!

Le bémol pour cela, bien sûr, c'est que c'est une question de bon sens si je suis le seul qui peut le pousser à que Heroku app/référentiel. Un test ou d'une équipe d'assurance qualité peut gérer un référentiel d'essayer différentes candidat branches, mais ils devraient coordonner leurs efforts afin qu'ils soient tous d'accord sur ce branche sur laquelle ils sont en train de pousser sur n'importe quel jour donné.

Inutile de dire, il serait également une très bonne idée d'avoir un dépôt distant (comme Github) sans cette restriction pour la sauvegarde de tout jusqu'à. Je dirais qu'une "origine" et l'utilisation "heroku" pour Heroku, de sorte que "git push" toujours le dos à tout pour de l'origine, et "git push heroku" pousse quelle que soit la branche, je suis actuellement sur Heroku de la branche master, les remplacer si nécessaire.

Quelqu'un peut-il me dire si cela pourrait fonctionner?

[remote "heroku"]
 url = git@heroku.com:my-app.git
 push = +refs/heads/*:refs/heads/master

Je aimerais entendre de quelqu'un de plus expérimenté, avant que je commence à expérimenter, bien que je suppose que je pourrais créer un mannequin application sur Heroku et de tenter l'expérience.

Tant pour aller chercher, je n'ai pas vraiment de soins si le Heroku référentiel est en écriture seule. J'ai encore un distinct référentiel, comme Github, de la sauvegarde et de clonage de tout mon travail.

Note de bas de page: Cette question est similaire, mais pas tout à fait la même que http://stackoverflow.com/questions/1489393/good-git-deployment-using-branches-strategy-with-heroku

1327voto

jassa Points 5600

Voir https://devcenter.heroku.com/articles/git#deploying-code

$ git push heroku yourbranch:master

111voto

Chris Johnsen Points 50064

Lorsque vous utilisez un caractère générique, il se devait d'être présent sur les deux côtés de la refspec, alors +refs/heads/*:refs/heads/master ne fonctionnera pas. Mais vous pouvez utiliser +HEAD:refs/heads/master:

git config remote.heroku.push +HEAD:refs/heads/master

Aussi, vous pouvez le faire directement avec la commande git push:

git push heroku +HEAD:master
git push -f heroku HEAD:master

33voto

Tomasz Mazur Points 264
git push -f local_branch_name:master

4voto

jqr Points 414

Vous devriez vérifier heroku_san, il permet de résoudre ce problème tout à fait bien.

Par exemple, vous pouvez:

git checkout BRANCH
rake qa deploy

Il rend également facile à mettre en place de nouveaux Heroku instances de déployer une nouvelle branche de nouveaux serveurs:

git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates

Et bien sûr, vous pouvez faire plus simple râteau de tâches si vous faites quelque chose de souvent.

2voto

David Points 116

J'ai trouvé cela utile. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: