[Python-de] Force stable trunk

Diez B. Roggisch deets at web.de
Do Aug 1 10:09:21 CEST 2013


> 
> Ich stimme dir voll zu, nur habe ich einen anderen Namen für den Branch genommen.
> 
> Etwas anders formuliert könnte man auch fragen:
> 
> Welches Tool hilft mir feature-Branches automatisch
> nach dem OK aller Tests in den stable-Branch zu mergen?
> 
> Insbesondere bei vielen kleinen Änderungen ist das manuelle Vorgehen nervig.

Abgesehen mal davon, dass das technisch trivial durch einen Jenkins-Job der im Erfolgsfall getriggert wird und dann eben den merge durchführt zu erledigen wäre - das ist doch nicht, was man wirklich wollen will.

Denn dann werden ja alle möglichen Zwischenstände auf den Master geprügelt, bei denen das Feature gerade mal grün war. Was ja aber bezüglich seiner Deploybarkeit nichts aussagt. Von implizit erzeugten Fehlern (ohne merge-Konflikte!) habe ich ja auch schon berichtet - die hast du damit auch immer noch.

Und *wenn* du merge-Konflikte hast, dann hat's nicht geklappt - und wie erfährt der Entwickler davon? Per Mail in den Urlaub? Ein System, dass manchmal funktioniert, aber nicht immer, ist 1000mal nerviger als ein expliziter Arbeitsschritt.

Wenn man dann noch vernünftig mit git arbeitet - also mit rebasing, und auch interaktivem rebasing, um die feature-branch Historie auf Stand zu bringen - dann macht's erst recht keinen Sinn. 

Den Zeitpunkt, wann ein feature-branch ready-to-merge ist, kann IMHO nur ein Entwickler bestimmen.

Und wenn dir "git checkout master; git merge feature-branch; git push origin master" zu viel des guten sind, kannst du die einzige Variable Komponente "feature-branch" ja auch noch inferieren und das ganze in ein shell-Kommando "re-integrate" packen.

Wie schon gesagt, wir verhindern nur das gleichzeitige mergen in master.  Dadurch kann jede Entwicklerin in Ruhe den feature branch rebasen, und dann mergen - ohne dass sie befürchten muss, dass der master inzwischen weitergewandert ist. Idealerweise lässt sie dann noch lokal ein paar tests laufen - ist aber nicht immer zuzumuten, rein zeitlich.

Ein Feature haben wir noch zusätzlich gebaut, vielleicht ist das ja, was dir gefällt: green-master. Das ist ein branch, der durch den erfolgreichen jenkins-lauf unserer Test-Suite fast-forwarded wird, auf genau den commit, der grün getestet wurde. 

Wir ziehen davon unsere release-builds, genauso kann man davon aber natürlich auch deployen usw.

Diez


Mehr Informationen über die Mailingliste python-de