Einsatz von git für das Deployment auf twitcode.org

By | 09/12/2010

Aus Gründen der Weiterbildung hatte ich mich zu beginn des Relaunches von Twitcode.org dazu entschieden git einzusetzen. Für mein Setup habe ich insgesamt 3 Systeme auf denen das Projekt läuft und zwei Branches in git. Der erste Branch ist der master-Branch, den ich dafür benutze die aktive Entwicklung auf meinem Entwicklungssystem voranzutreiben. Der zweite Branch ist der staging-Branch, welcher die exakte Version des Livesystems ist.

Da ich parallel Weiterentwicklungen mache, die zwar zum Teil schon in den Masterbranch auf Github gepusht werden, jedoch noch nicht bereit sind auf das Livesystem zu kommen habe ich mich für das Feature cherry-pick entschieden um einzelne Änderungen auf das Livesystem zu bekommen.

Hierfür habe ich mein Staging-System, welches für mich die Weiche zwischen master- und staging-Branch darstellt. Änderungen werden also als erstes auf dem master-Branch gemacht. Wenn ich also eine Änderung im master-Branch gemacht habe welche ich direkt auf mein Livesystem bekommen will, dann commite ich exakt nur diese Änderung in mein master auf Github. Auf dem Staging-System wird diese Änderung dann per cherry-pick in den staging-Branch gemergt und von dort aus auf Github in den staging-Branch gepusht. Alles was ich dann noch auf dem Livesystem machen muss ist ein pull auf den staging-Branch auf Github und einmal den Cache von FLOW3 leeren und schon sind die Änderungen live.

Wenn die Weiterentwicklungen irgendwann so weit sind, dass ich wieder alles auf das Livesystem bekommen möchte steht es mir jederzeit frei den kompletten master-Branch mit dem staging-Branch zu mergen.

Bei dem Vorgehen mit den cherry-picks ist es jedoch wichtig saubere Commits zu machen damit man auch wirklich die entsprechenden Commits einzeln per cherry-pick mergen kann und nicht versehentlich mehr auf das Livesystem bekommt wie man eigentlich möchte.

Bisher fahre ich sehr gut mit der Strategie und bin auch begeistert was git zu bieten hat, bin mir jedoch auch darüber bewusst dass ich was git angeht noch jede Menge lernen muss.

Anbei noch ein kleines Schaubild das den Prozess bei mir verdeutlichen soll. Über Anregungen und Feedback zu dem Prozess, sowie zu eventuellen Verbesserungsvorschlägen des Prozesses würde ich mich jederzeit freuen.