
Andrew Hanna

Andrew Hanna

Kort antwoord: de meeste Salesforce-teams kunnen het beste starten
met een feature-branchmodel, waarbij main altijd de productie
weerspiegelt en elke wijziging op een eigen kortlevende branch staat. Voeg omgevings-
of release-branches pas toe als packaging, parallelle release-trajecten of een groot
team dat afdwingen. Het Salesforce-specifieke deel is niet de Git-graaf, maar het
koppelen van elke langlevende branch aan een sandbox en het oplossen van
metadata-merge-conflicten.
Branchingstrategie is waar de meeste Salesforce-DevOps-opstellingen op hun plek vallen of onder hun eigen gewicht bezwijken. Kopieer een complex model dat je niet nodig hebt en elke developer betaalt dagelijks belasting; kies er een die bij je releaseritme past en Git gaat uit de weg.
Een branchingstrategie is het geheel van regels voor hoe je team branches maakt, samenvoegt en promoot. Op Salesforce weegt dat zwaarder om drie redenen: je bron van waarheid is declaratieve metadata (XML) naast Apex, je omgevingen zijn orgs en sandboxes in plaats van servers, en je kunt het hele project niet lokaal compileren, dus validatie gebeurt tegen een org. Daardoor worden twee vragen onvermijdelijk die andere stacks kunnen uitstellen: welke branch staat voor welke sandbox, en hoe los je conflicten op in bestanden zoals profielen en flows die veel mensen aanraken. Salesforce DevOps Center, nu algemeen beschikbaar, leunt hierop door GitHub of Bitbucket als de single source of truth te behandelen.
Vier patronen dekken bijna elk team:
main is altijd te
releasen; elke wijziging vertakt van main en komt via een pull request
terug. Het eenvoudigst om te draaien, en de beste standaard voor de meeste teams.
dev, uat, main), gepromoot door
stroomopwaarts te mergen. Intuitief en makkelijk te visualiseren, maar gevoelig voor
drift als een hotfix een fase overslaat.
release/x afgesplitst
van main om een versie te stabiliseren terwijl nieuw werk doorgaat.
Handig als je wijzigingen bundelt in geplande releases.
Koppel elke langlevende branch aan een sandbox die bij zijn taak past, en laat refresh-limieten de vorm bepalen. Salesforce ververst Developer- en Developer Pro-sandboxes dagelijks, Partial Copy elke 5 dagen en Full elke 29 dagen, dus een Full sandbox voor de laatste UAT kan niet je snelle integratiedoel zijn. Een gangbare, wrijvingsarme koppeling:
feature/*-branches naar Developer- of Developer Pro-sandboxes om te
bouwen.
main gevalideerd tegen een Full sandbox voordat het productie bereikt.
De volledige mechaniek staat in hoe je Git-branches koppelt aan Salesforce-sandboxes.
Hier doet Salesforce-branching echt pijn. Profielen, permission sets en flows zijn grote XML-bestanden die veel wijzigingen aanraken, dus naieve merges beschadigen ze. Houd branches kortlevend zodat ze minder divergeren, splits profielen op in permission sets, en gebruik een Salesforce-bewuste merge-driver die de XML begrijpt in plaats van die regel voor regel te mergen. We lopen dat door in hoe je een Salesforce-bewuste Git-merge-driver opzet.
Stem het model af op je releaseritme, niet op een organigram:
main. Voeg niets meer toe.
Als twee opties even geldig lijken, kies de eenvoudigste; je kunt later altijd opschalen. Onze beslisregel voor Git-branchingstrategieen maakt hier een enkele vraag van die je in een vergadering kunt beantwoorden. En omdat elk model ooit een slechte wijziging uitlevert, koppel het aan een plan voor het terugdraaien van mislukte Salesforce-deployments.
De strategie is Git; de tool automatiseert de promotie erlangs. Platforms zoals Copado, Gearset en AutoRABIT gaan elk uit van een branchingmodel, dus eerst je model kiezen voorkomt dat je in dat van iemand anders wordt geduwd. Verplaats je een bestaande branching-opstelling naar een nieuwe pipeline, dan behandelt onze migratiegids hoe je je branches meeneemt zonder herschrijving. Voor meer Salesforce-DevOps-how-tos, blader door onze SF Guides.
Wat is de beste Git-branchingstrategie voor Salesforce?
Voor de meeste teams een feature-branchmodel met een altijd-te-releasen main-branch. Het is het eenvoudigst om te draaien en schaalt tot packaging of parallelle releases iets complexers afdwingen.
Moet elke Salesforce-sandbox een eigen branch hebben?
Alleen langlevende branches horen aan sandboxes gekoppeld te zijn. Kortlevende feature branches delen Developer-sandboxes; reserveer Partial Copy en Full voor integratie en eindvalidatie.
Is Gitflow een goede keuze voor Salesforce?
Gitflow past bij ISVs en teams die meerdere versies tegelijk onderhouden. Voor een enkele productie-org voegt het meestal meer branches toe dan het releaseritme nodig heeft.
Hoe voorkom ik profiel-merge-conflicten?
Houd branches kortlevend, geef de voorkeur aan permission sets boven profielen, en gebruik een Salesforce-bewuste merge-driver zodat XML per structuur samenvoegt in plaats van per regel.
Vrijblijvend.