Heroku a pour politique d'ignorer toutes les branches sauf le "maître".
Bien que je sois certain que les concepteurs de Heroku ont d’excellentes raisons pour cette politique (pour le stockage et l’optimisation des performances, je suppose), la conséquence pour moi en tant que développeur est que, quelle que soit la branche de sujet locale sur laquelle je travaille, je voudrais un moyen simple pour basculer le maître de Heroku vers cette branche de sujet locale et faire un "git Push heroku -f" pour écraser le maître sur Heroku.
Ce que je tire de la lecture de la section "Pushing Refspecs" de http://progit.org/book/ch9-5.html est
git Push -f heroku branche locale: références/têtes/maître
Ce que j'aimerais vraiment, c’est un moyen de l’installer dans le fichier de configuration de sorte que "git Push heroku" fasse toujours ce qui précède, en remplaçant local-topic-branch avec le nom de la branche actuelle. Si quelqu'un sait comment y parvenir, faites-le moi savoir!
La mise en garde à ce sujet, bien sûr, est que cela n’est raisonnable que si je suis le seul à pouvoir envoyer Push à cette application/ce référentiel Heroku. Une équipe de test ou d’assurance qualité peut gérer un tel référentiel afin d’essayer différentes branches candidates, mais elle devra se coordonner pour qu’elles s’entendent sur la branche qu’elles y poussent un jour donné.
Il va sans dire que ce serait également une très bonne idée de disposer d'un référentiel distant séparé (comme GitHub) sans cette restriction pour tout sauvegarder. J'appellerais celui-ci "Origin" et utiliserais "heroku" pour Heroku afin que "git Push" sauvegarde toujours tout le contenu vers Origin, et que "git Push heroku" insère la branche que je suis actuellement sur la branche principale de Heroku, en la remplaçant. si nécessaire.
Cela fonctionnerait-il?
[distant "heroku"] url = [email protected]: my-app.git Push = + refs/heads/*: réfs/heads/master
J'aimerais entendre quelqu'un de plus expérimenté avant de commencer à expérimenter, même si je suppose que je pourrais créer une application factice sur Heroku et expérimenter avec cela.
En ce qui concerne la récupération, peu m'importe que le référentiel Heroku soit en écriture seule. J'ai toujours un référentiel séparé, comme GitHub, pour la sauvegarde et le clonage de tout mon travail.
Note de bas de page: Cette question est semblable à (mais pas tout à fait la même chose que --- bon déploiement de Git en utilisant une stratégie de branches avec Heroku?
Lorsque vous utilisez un caractère générique, il doit être présent des deux côtés de la référence, de sorte que +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
En outre, 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
git Push -f heroku local_branch_name:master
La commande la plus sûre pour pousser différentes branches Git locales vers Heroku/maître.
git Push -f heroku branch_name:master
Remarque: Bien que vous puissiez pousser sans utiliser -f, l’option -f (indicateur de force) est recommandée afin d’éviter les conflits avec les push d’autres développeurs.
Notez également que si vous utilisez le système git flow et votre branche technique, appelez-les.
feature/mobile_additions
et avec une télécommande git appelée stagingtwo, la commande Push to heroku serait
git Push stagingtwo feature/mobile_additions:master
Vous devriez vérifier heroku_san , cela résout ce problème assez bien.
Par exemple, vous pourriez:
git checkout BRANCH
rake qa deploy
Il facilite également la création de nouvelles instances Heroku pour déployer une branche de sujet sur 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 simplifier les tâches de rake si vous faites quelque chose fréquemment.
J'ai trouvé cela utile. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
Heroku Labs propose désormais un complément github qui vous permet de spécifier quelle branche activer.
Voir la rédaction de Heroku sur cette fonctionnalité bêta.
Vous aurez besoin de vous inscrire en tant que testeur bêta pour le moment.
Je pense que ça devrait être
Push = refs/heads/*:refs/heads/*
au lieu...