Domanda

Che cosa è una strategia buona distribuzione da utilizzare con Git + Heroku (Ruby on Rails)?

Al momento il mio modo di lavorare con la mia origine repository Git: Tutte le funzionalità (o 'storie') vengono prima controllate come rami, quindi ottenere fusa con master e spinto all'origine

.

Tutto ciò ha spinto a origin / master innesca uno script che tira il nuovo codice rotaie per l'area di sosta (rotaie semplice server web).

Quando arriva il momento per me di spingere una nuova versione di produzione di Heroku, devo creare un nuovo ramo (chiamato qualcosa come production_version_121), e che in qualche modo spingere a Heroku?

Idealmente mi piacerebbe scegliere quali caratteristiche rispetto alle versioni precedenti di sviluppo devo includere nel ramo di produzione ... testarlo, e spingere a Heroku.

Per esempio, io può decidere tutte le ultime codice per ottenere spinto alla produzione. Potrei voler funzione "a" che avevo lavorato e caratteristica "c" sia fusi in produzione in qualche modo, senza includere sperimentale caratteristica "b", che ha bisogno di più di debug.

NB. Ho intenzione di provare Capistrano evitando in un primo momento e ottenere qualcosa di lavoro manuale per il momento.

Pensieri? Best Practices?

È stato utile?

Soluzione

Nel progetto Gemcutter dobbiamo semplicemente un produzione ramo. Tutte le modifiche che vogliamo vedere sul sito di produzione vengono fusi in quel ramo, e poi distribuiti con:

git push heroku production:master

Il ramo staging uno scopo simile per il sito di staging (anche su Heroku)

Altri suggerimenti

Da quando ho letto di Vincent Driessen Un successo Git modello di ramificazione , sono stato agganciato. Tutta la mia società (8 di noi) hanno ormai standardizzato su questo modello e pochi altri posti che ho consultato hanno anche iniziato ad usarlo come bene.

La maggior parte tutti quelli che ho dimostrato di dice che stavano facendo qualcosa di già simile e l'ho trovato molto facile da adattare.

In poche parole, si hanno 2 rami che sono permanenti (master e si sviluppano). La maggior parte del tempo sarete solo facendo si dirama di sviluppo e la loro unione di nuovo in sviluppo. Le cose diventano un po 'più complesso quando si arriva a fare uscite di produzione e hotfix, ma dopo aver letto il post un paio di volte, diventa radicata.

C'è anche uno strumento a riga di comando chiamato rel="nofollow noreferrer"> git-flusso di aiutarvi.

Ci sono una varietà di modi per andare su questo, e in realtà dipende dalla vostra preferenza.

Ti do una strategia possibile fuori dalla parte superiore della mia testa: Dato si dispone già di una configurazione messa in scena automatizzato che utilizza maestro, vorrei suggerire la creazione di un ramo 'di produzione'. Quando si desidera promuovere una correzione / funzione per la produzione, si sarebbe solo fondere ramo argomento nel vostro ramo 'di produzione'.

git checkout production
git pull . my-topic-branch
(resolve any conflicts)

Quando si è pronti a realtà Push che il codice al server di produzione, è necessario tag ramo utilizzando un nome univoco (probabilmente con un timestamp). Quindi è sufficiente spingere il ramo di produzione di Heroku.

git checkout production
git tag release-200910201249

Io suggerirei di creare uno script o git alias per automatizzare la marcatura per i timestamp, dal momento che utilizza uno schema di denominazione coerente è importante. Io uso qualcosa di simile:

git config alias.dtag '!git tag release-`date "+%Y%m%d%H%M"`'

che mi permette di fare basta digitare git dtag quando voglio etichettare un rilascio con un timestamp.

È possibile visualizzare i tag si utilizza git tag e visualizzarli utilizzando git show release-1234. Per ulteriori informazioni sui tag, git help tag eseguire. È inoltre possibile trovare questo Github guide sulla codifica utile. Consiglio anche la lettura dei flussi di lavoro di altre persone (qui è un interessante resoconto ) e scegliere ciò che funziona per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top