Comment pousser différentes branches Git locales à Heroku / master
Heroku a pour Politique d'Ignorer toutes les branches sauf le "maître".
bien que je suis sûr que les concepteurs de Heroku ont d'excellentes raisons pour cette politique (je devine pour le stockage et l'optimisation de la performance), la conséquence pour moi en tant que développeur est que quelle que soit la branche thématique locale que je peux être en train de travailler sur, Je voudrais un moyen facile de passer le maître de Heroku à cette branche thématique locale et faire un "git push heroku-F" à Over-write master sur Heroku.
Ce Que Je obtenu de la lecture de la section "poussant Refspecs" de http://progit.org/book/ch9-5.html est
git push -f heroku local-topic-branch:refs/heads/master
ce que j'aimerais vraiment c'est une façon de configurer cela dans le fichier de configuration pour que" git push heroku "fasse toujours ce qui précède, en remplaçant local-topic-branch par le nom de n'importe quelle branche actuelle. Si quelqu'un sait comment y parvenir, s'il vous plaît laissez-moi savoir!
La mise en garde pour ceci, bien sûr, est que cela est seulement raisonnable si je suis le seul qui peut pousser à cette application/dépôt Heroku. Une équipe d'essai ou D'assurance de la qualité pourrait gérer un tel référentiel pour essayer différentes branches candidates, mais elles devraient coordonner de sorte qu'elles s'entendent toutes sur la branche qu'elles poussent vers elle à n'importe quel jour donné.
inutile de dire que ce serait aussi une très bonne idée d'avoir un dépôt distant séparé (comme GitHub) sans cette restriction pour tout sauvegarder. J'appellerais ça une " origine "et j'utiliserais" heroku "pour Heroku pour que" git push "soutienne toujours tout à l'origine, et" git push heroku " pousse n'importe quelle branche sur laquelle je suis actuellement à la branche principale D'Heroku, en l'écrasant si nécessaire.
est-ce que ça marcherait?
[remote "heroku"] url = git@heroku.com:my-app.git push = +refs/heads/*:refs/heads/master
j'aimerais entendre quelqu'un de plus expérimenté avant de commencer à expérimenter, bien que je suppose que je pourrais créer une application factice sur Heroku et expérimenter avec cela.
pour ce qui est de la récupération, je me fiche que le dépôt Heroku ne soit qu'en écriture. J'ai toujours un dépôt séparé, comme GitHub, pour la sauvegarde et le clonage de tout mon travail.
note de bas de page: cette question est similaire, mais pas tout à fait la même que bon déploiement Git en utilisant la stratégie branches avec Heroku?
9 réponses
en utilisant un joker, il devait être présent des deux côtés de la refspec, donc +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 git push :
git push heroku +HEAD:master
git push -f heroku HEAD:master
voir https://devcenter.heroku.com/articles/git#deploying-code
$ git push heroku yourbranch:master
vous devriez vérifier heroku_san , il résout ce problème assez bien.
par exemple, vous pouvez:
git checkout BRANCH
rake qa deploy
il rend également facile de lancer de nouvelles instances Heroku pour déployer une branche de sujet à 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 des tâches de râteau plus simples si vous faites quelque chose fréquemment.
notez également que si vous utilisez le système de flux git et votre branche caractéristique pourrait être appelé
feature/mobile_additions
et avec une télécommande git appelée stagingtwo, alors l'ordre de pousser à heroku serait
git push stagingtwo feature/mobile_additions:master
la commande la plus sûre pour pousser différentes branches Git locales à Heroku/master.
git push -f heroku branch_name:master
Note: bien que vous puissiez pousser sans utiliser l'option-f, l'option-f (force flag) est recommandée afin d'éviter les conflits avec les pushs des autres développeurs.
j'ai trouvé ça utile. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
Heroku labs offre maintenant un add-on github qui vous permet de spécifier quelle branche à pousser.
voir L'article D'Heroku sur cette fonctionnalité bêta.
vous aurez besoin de vous inscrire en tant que bêta-testeur pour le temps-être.
je pense qu'il devrait être
push = refs/heads/*:refs/heads/*
à la place...