
Andrew Hanna

Andrew Hanna

Kort antwoord: Commit elke Flow als één
.flow-meta.xml-bestand zonder versienummer, geef elke Flow per wijziging
één eigenaar en laat Git Flow-XML nooit automatisch mergen. Raken twee branches toch
dezelfde Flow, houd dan één kant en bouw de andere wijziging opnieuw in Flow Builder
in plaats van XML met de hand te bewerken. Het meeste mergeleed bij Flows komt door
parallelle bewerkingen en layoutruis, niet door Git.
Een Flow is geen code die je regel voor regel schrijft. Het is XML die Flow Builder genereert, en daar zitten een paar valkuilen in:
locationX- en locationY-coördinaten, dus een blok
verslepen levert een diff op zonder logische wijziging. Een Flow omzetten tussen
free-form en auto-layout herschrijft de posities van alle elementen.
force-app/main/default/flows/, genoemd naar de API-naam van de Flow
zonder versieachtervoegsel.
status-veld op de Flow zelf of die actief is, en Salesforce raadt
Flow Definitions voor activatie niet langer aan.
sf project retrieve start --metadata Flow:Case_Escalation. Controleer
de status-waarde vóór je commit, zodat er nooit per ongeluk een concept
meegaat.
force-app/**/flows/*.flow-meta.xml -merge in
.gitattributes. Volgens de
gitattributes-documentatie
houdt een uitgeschakelde merge de versie van jouw branch aan en meldt
een conflict. Vermijd hier de binary-snelkoppeling, want die schakelt
ook diffs uit en je wilt Flow-wijzigingen nog steeds reviewen.
Die laatste stap telt het zwaarst. Een regelgebaseerde merge kan Flow-XML opleveren die volkomen geldig is en toch logisch fout, bijvoorbeeld een connector die wijst naar een element dat de andere branch heeft verwijderd. Een afgedwongen conflict is goedkoper dan een stil conflict. Daarom houdt onze gids voor een Salesforce-bewuste Git merge driver Flows ook buiten de patronen van de driver: profielen en permission sets mergen goed per node, Flow-logica niet.
git checkout --ours of --theirs op het Flow-bestand.
Voor conflicten in andere metadatatypes, zie hoe je Salesforce-metadataconflicten tijdens een merge oplost.
Deploy je Flows nog met change sets? Begin dan met de overstap van change sets naar source control en pas daarna de stappen hierboven toe.
DevOps-platforms zoals Gearset en Flosum voegen Flow-bewuste vergelijking en deployment toe bovenop Git, en Lifecycle Center van Salesforce (voorheen DevOps Center) geeft via zijn MCP-tools AI-aanbevelingen voor conflictoplossing. Serpent lost conflicten op in de pull request zelf: Serpent AI stelt een oplossing voor en wacht op jouw review voordat die wordt toegepast, en AI-codereview zit in elk abonnement. Bekijk de abonnementen van Serpent of blader door meer Salesforce DevOps-gidsen.
Moet ik FlowDefinition-bestanden committen?
Nee. Sinds Metadata API v44 regelt het eigen status-veld van de Flow de
activatie, en Salesforce raadt Flow Definitions daarvoor niet langer aan.
Kan Git twee versies van dezelfde Flow automatisch mergen?
Het kan een tekstueel schone merge opleveren, maar Git begrijpt geen Flow-logica.
Dwing een conflict af met -merge en voer één wijziging opnieuw door in
Flow Builder.
Waarom staat er een concept-Flow in mijn repository?
Een retrieve levert de nieuwste versie van de Flow op, actief of concept. Controleer
de status-waarde voordat je commit.
Maken wijzigingen in locationX en locationY uit?
Ze veranderen alleen de layout, niet het gedrag. Beoordeel ze als ruis en wissel niet van canvasmodus, dan blijven ze stabiel.
Vrijblijvend.