
Andrew Hanna

Andrew Hanna

Metadaten-Konflikte in Salesforce entstehen, weil die Konfiguration deiner Org in Tausenden XML-Dateien lebt, und drei Eigenschaften dieser Dateien machen Kollisionen zur Routine: die Metadata API gibt Elemente in nicht-deterministischer Reihenfolge zurück, monolithische Dateien wie Profile sammeln Änderungen aus unzusammenhängender Arbeit, und Teams mergen aus Sandboxes, die auseinandergedriftet sind. Die meisten Konflikte, die du bekämpfst, sind falsch, Rauschen statt echter Uneinigkeit. Du stoppst sie mit Source Tracking, kurzlebigen Branches, Permission Sets statt Profilen und einem metadaten-bewussten Merge statt eines rohen git-Diffs.
Ein Metadaten-Konflikt ist ein Merge-Konflikt in den XML-Dateien, die deine Org definieren: Objekte, Felder, Apex, Flows, Profile, Permission Sets und Layouts. Er entsteht, wenn zwei Branches dieselbe Datei ändern und git sie nicht automatisch zusammenführen kann. Da Salesforce Konfiguration als Text darstellt, wird jeder Admin-Klick und jeder Entwickler-Commit letztlich zu einer Zeile in einer Datei, die git mergen muss.
Der Haken ist, dass viele dieser Konflikte falsch sind. Git meldet eine Kollision, wo es keine echte semantische Uneinigkeit gibt, nur umsortiertes oder umformatiertes XML.
Vier Grundursachen, grob nach Häufigkeit:
Manche Dateitypen sind weit konfliktanfälliger als andere:
Wenn ein Konflikt doch landet:
Ein roher Drei-Wege-git-Merge kann umsortiertes XML nicht von einer echten Änderung unterscheiden, weshalb das gesamte Salesforce-DevOps-Ökosystem zum metadaten-bewussten Mergen konvergiert ist. Das komplette Vorgehen, inklusive Lesen eines Profil-Diffs und Umgang mit einem konfliktbehafteten Flow, steht in Salesforce-Metadatenkonflikte lösen, ohne die Arbeit anderer zu verlieren.
Mehrere Plattformen bieten semantisches oder metadaten-bewusstes Mergen, das falsche Konflikte automatisch löst und nur die echten meldet. Gearset, Copado, AutoRABIT, Flosum, Salto und Blue Canvas arbeiten alle in diesem Bereich, jeweils mit einer anderen Balance aus Automatisierung und Kontrolle. Serpent wählt einen git-nativen Ansatz: es liest deine Metadaten kontextbezogen, absorbiert nicht-funktionales XML-Rauschen und bringt nur echte Konflikte zur menschlichen Entscheidung nach oben, sodass kurzlebige Branches günstig zu mergen bleiben.
Sind die meisten Salesforce-Metadaten-Konflikte echt?
Nein. Viele sind falsche Konflikte durch nicht-deterministische XML-Reihenfolge oder Umformatierung, und ein metadaten-bewusster Merge ignoriert sie automatisch.
Warum sind Profile so konfliktanfällig?
Ein Profil ist eine große Datei mit Berechtigungen für jedes Objekt und Feld, sodass unzusammenhängende Änderungen nebeneinander landen und git sie als Kollision liest.
Verhindern Permission Sets Konflikte?
Sie reduzieren sie. Kleinere, zweckgebundene Permission Sets bedeuten, dass weniger Leute dieselbe Datei bearbeiten, was Überschneidungen verkleinert.
Wie helfen kurzlebige Branches?
Tägliches Mergen in den Trunk hält die Divergenz klein, sodass jeder Merge Stunden an Änderung zusammenführt statt Wochen.
Kann CI/CD Metadaten-Konflikte eliminieren?
Nicht vollständig, aber Source Tracking, häufige Merges und metadaten-bewusstes Tooling verwandeln die meisten Konflikte in automatische Lösungen.
Unverbindlich.