CircleCI, il mio servizio CI ospitato può essere impostato per farlo. Cerchia automaticamente crea tutti i rami per impostazione predefinita. Per il nostro codice, le build verdi sul master vengono automaticamente integrate nel ramo di produzione. Certo, fallo solo se hai una buona suite di test.
Ora, questo caso è facile, perché nessuno spinge direttamente alla produzione.
Penso che ci sia un sacco di lavoro interessante che può andare avanti qui. Alla fine, mi piacerebbe ottenere tutti i rami di bugfix per auto-merge in master su verde. Sono stato in situazioni in cui sto lavorando su un bug, ho eseguito tutti i test, poi ho scoperto che ho bisogno di unirmi al master (piuttosto che al fast-foward), e dimentico di eseguire nuovamente tutti i test, e finisco per rompere il costruire.
Una caratteristica che mi interessa scrivere è un commento nel messaggio di commit che dice "unisci al ramo X, se è verde". In questo modo, non è mai possibile avere il master essere rotto.
Le altre risposte qui non hanno molto senso per me. Il tuo sistema di CI non deve essere stupido. Dovrebbe essere in grado di gestire con garbo i conflitti di fusione, non fondendosi e informando l'utente. E su qualsiasi ramo "condiviso", come master o produzione, le merges dovrebbero always essere veloci avanti!