Heroku hat die Politik, alle Zweige außer 'master' zu ignorieren.
Ich bin mir sicher, dass die Designer von Heroku gute Gründe für diese Richtlinie haben (ich schätze, sie ist speicher- und leistungsoptimierend). Die Konsequenz für mich als Entwickler ist jedoch, dass ich mir einen einfachen Weg wünsche, an welchem lokalen Zweig auch immer ich gerade arbeite Herokus Meister zu diesem lokalen Zweig wechseln und ein "git Push heroku -f" ausführen, um den Meister auf Heroku zu überschreiben.
Was ich beim Lesen des Abschnitts "Pushing Refspecs" von http://progit.org/book/ch9-5.html erhalten habe, ist
git Push -f heroku Lokaler Zweig: refs/heads/master
Was ich wirklich gerne hätte, ist eine Möglichkeit, dies in der Konfigurationsdatei so einzurichten, dass "git Push heroku" immer das oben Gesagte ausführt und local-topic-branch durch den Namen meines Namens ersetzt aktueller Zweig ist zufällig. Wenn jemand weiß, wie man das erreicht, lass es mich wissen!
Die Einschränkung dabei ist natürlich, dass dies nur sinnvoll ist, wenn ich der einzige bin, der auf diese Heroku-App/dieses Heroku-Repository pushen kann. Ein Test- oder QA-Team könnte ein solches Repository verwalten, um verschiedene Kandidatenzweige auszuprobieren, aber es müsste koordiniert werden, damit sich alle darüber einig sind, welchen Zweig sie an einem bestimmten Tag ansteuern.
Natürlich wäre es auch eine sehr gute Idee, ein separates Remote-Repository (wie GitHub) ohne diese Einschränkung für die Sicherung aller Daten zu haben. Ich würde diesen einen "Ursprung" nennen und "Heroku" für Heroku verwenden, damit "git Push" immer alles in Origin sichert und "git Push Heroku" den Zweig, auf dem ich mich gerade befinde, in Herokus Hauptzweig überträgt und ihn überschreibt im Bedarfsfall.
Würde das funktionieren?
[remote "heroku"] url = [email protected]: my-app.git Push = + refs/heads/*: refs/heads/master
Bevor ich anfange zu experimentieren, würde ich gerne von jemandem hören, der mehr Erfahrung hat, obwohl ich wahrscheinlich eine Dummy-App auf Heroku erstellen und damit experimentieren könnte.
Beim Abrufen ist es mir eigentlich egal, ob das Heroku-Repository schreibgeschützt ist. Ich habe immer noch ein separates Repository, wie GitHub, für die Sicherung und das Klonen aller meiner Arbeiten.
Fußnote: Diese Frage ist ähnlich, aber nicht ganz das Gleiche wie Gute Git-Bereitstellung mit Branches-Strategie mit Heroku?
Bei Verwendung eines Platzhalters musste dieser auf beiden Seiten der Referenz angegeben werden, damit +refs/heads/*:refs/heads/master
Nicht funktioniert. Sie können aber +HEAD:refs/heads/master
Verwenden:
git config remote.heroku.Push +HEAD:refs/heads/master
Sie können dies auch direkt mit git Push tun:
git Push heroku +HEAD:master
git Push -f heroku HEAD:master
Siehe https://devcenter.heroku.com/articles/git#deploying-code
$ git Push heroku yourbranch:master
git Push -f heroku local_branch_name:master
Der sicherste Befehl, um verschiedene lokale Git-Zweige an Heroku/master zu senden.
git Push -f heroku branch_name:master
Hinweis: Sie können zwar ohne die Option -f pushen, es wird jedoch empfohlen, die Option -f (Flag erzwingen) zu verwenden, um Konflikte mit den Pushs anderer Entwickler zu vermeiden.
Beachten Sie auch, dass bei Verwendung des Git Flow-Systems und Ihres Feature-Zweigs möglicherweise ein Aufruf erfolgt
feature/mobile_additions
und mit einer git-fernbedienung namens stagingtwo würde der befehl push to heroku lauten
git Push stagingtwo feature/mobile_additions:master
Sie sollten sich heroku_san ansehen, es löst dieses Problem ganz gut.
Zum Beispiel könnten Sie:
git checkout BRANCH
rake qa deploy
Es macht es auch einfach, neue Heroku-Instanzen hochzufahren, um einen Zweig auf neuen Servern bereitzustellen:
git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates
Und natürlich können Sie einfachere Rechenaufgaben machen, wenn Sie häufig etwas tun.
Ich fand das hilfreich. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
Heroku Labs bietet jetzt ein Github-Add-On, mit dem Sie angeben können, welcher Zweig gepusht werden soll.
Siehe Herokus Beschreibung dieser Beta-Funktion.
Sie müssen sich vorerst als Beta-Tester anmelden.
Ich denke es sollte sein
Push = refs/heads/*:refs/heads/*
stattdessen...