
Serpent Team

Andrew Hanna

Kort gezegd: kies je branchingmodel op twee inputs, teamgrootte en sandbox-topologie, en verder niets. Onder ongeveer vier bijdragers met alleen developer-sandboxes: een main-branch en kortlevende feature branches. Tussen vier en tien met een partial copy voor UAT: voeg een release branch per release toe en stop daar. Daarboven, of met een full sandbox en een vast changevenster, verdient GitFlow zijn ceremonie. Branch per omgeving is een compliancekeuze, geen engineeringkeuze.
Drie dingen, en alleen drie: waar werk in uitvoering leeft, hoe een wijziging naar de volgende omgeving wordt gepromoveerd, en wat waar moet zijn voordat iets productie bereikt. De rest is diagramversiering.
Salesforce-teams gaan hier de mist in omdat het algemene engineeringadvies iets aanneemt dat op het platform niet klopt: dat een branch je ook een plek geeft om hem te draaien.
Een langlevende branch, main, die altijd weerspiegelt wat productie zou
moeten zijn. Feature branches leven dagen, geen weken, en mergen terug via een pull
request. De minste bewegende delen, de minste conflicten, de zwaarste discipline.
main voor uitgebrachte code, develop voor geintegreerd werk,
plus release- en hotfixbranches. Gebouwd voor geplande releases en voor het
onderhouden van een live versie terwijl de volgende wordt gebouwd. Het kost een extra
permanente branch en veel mergewerk.
Een branch die elke org spiegelt: dev, UAT, staging, productie. Meestal het eerste wat teams bouwen, omdat het lijkt op het orglandschap dat ze al hebben. Promoveren wordt een merge tussen omgevingsbranches, wat netjes klinkt en uitmondt in merges van merges plus routinematig cherry-picken.
Hier stoppen de meeste branchingartikelen, en hier zit de echte beslissing.
develop; je sandboxaantal rechtvaardigt hem niet.
Merk op dat releasecadans nauwelijks voorkomt. Cadans is een uitkomst van je sandbox-topologie, geen zelfstandige input, en teams die kiezen op gewenste cadans krijgen een proces dat hun omgevingen niet kunnen dragen.
main met productie en behandel het verschil als echte backlog,
niet als curiositeit. Daar zitten meestal de verrassingen.
Het model dat contact met een echt team overleeft, is het model dat de pijplijn afdwingt, niet het model in het onboardingdocument. Als een consultant de branchingregels moet onthouden, worden ze in de eerste drukke releaseweek gebroken. Serpent draait een ticketgestuurde workflow met Git op de achtergrond, zodat de branch, de pull request en het promotiepad uit het ticket komen in plaats van uit het geheugen. Meer pijplijngidsen staan in onze SF Guides-bibliotheek.
Is trunk-based realistisch voor een team van admins?
Ja, en het is meestal makkelijker dan GitFlow, want er is een branch om te begrijpen. De discipline die telt is korte branches, niet Git-vaardigheid.
Hebben we een Git-branch per sandbox nodig?
Nee. Een sandbox is een deploymentdoel. Een branch per org koppelen is de hoofdoorzaak van merges van merges en permanent cherry-picken.
Hoe lang mag een Salesforce feature branch leven?
Dagen. Een sprint is de bovengrens. Daarna kosten metadatadrift en profielconflicten meer dan de branch oplevert.
Hoe werken hotfixes bij trunk-based?
Branch vanaf de laatst uitgebrachte commit, fix, valideer, deploy, en merge direct terug naar main zodat de fix bij de volgende release niet verdwijnt.
Verandert het model voor 2GP-packageteams?
Ja. Branch per packageversie en test in scratch orgs. Omgevingsbranches modelleren een orglandschap waar een packageteam niet naartoe releaset.
Vrijblijvend.