Andrew Hanna

Andrew Hanna

Salesforce-Metadatenkonflikte bei einem Merge aufloesen

Salesforce-Metadatenkonflikte bei einem Merge aufloesen

Um einen Salesforce-Metadatenkonflikt bei einem Merge aufzuloesen, behandeln Sie die Datei als XML-Knoten statt als Zeilen: oeffnen Sie die konfliktbehaftete Datei, behalten Sie die unabhaengigen Aenderungen beider Seiten, verwerfen Sie nur die wirklich kollidierende Bearbeitung, validieren Sie dann das XML und deployen Sie in eine Scratch Org oder Sandbox, bevor Sie committen. Die meisten Salesforce-Konflikte sind Falschmeldungen durch XML-Reihenfolge, keine echten Meinungsverschiedenheiten, daher ist das Ziel Versoehnung, nicht einen Sieger zu kueren. So machen Sie es sauber.

Was ist ein Salesforce-Metadaten-Merge-Konflikt?

Ein Merge-Konflikt entsteht, wenn zwei Git-Branches dieselbe Datei aendern und Git nicht entscheiden kann, welche Version gewinnt, also stoppt es und gibt Ihnen die Datei mit Konfliktmarkierungen zurueck. Auf Salesforce ist diese Datei fast immer deklarative Metadaten, gespeichert als XML: ein Profil, eine Permission Set, ein Flow oder ein Layout. Git vergleicht Text Zeile fur Zeile, und XML passt nicht gut in dieses Modell.

Warum treten Salesforce-Metadatenkonflikte so oft auf?

Drei Eigenschaften von Salesforce-Metadaten machen Konflikte weit haeufiger als in gewoehnlichem Code:

  • Die XML-Reihenfolge ist nicht deterministisch. Die Metadata API kann dieselben Elemente zwischen Abrufen in unterschiedlicher Reihenfolge zurueckgeben, sodass Git einen Unterschied meldet, wo sich nichts geaendert hat.
  • Grosse Einzeldateien. Profile, Permission Sets und Layouts packen Hunderte unzusammenhaengender Einstellungen in eine Datei, sodass zwei Personen, die verschiedene Objekte bearbeiten, dennoch auf benachbarten Zeilen kollidieren.
  • Git sieht Zeilen, keine Schluessel. Es kann nicht erkennen, dass zwei Bearbeitungen verschiedene XML-Knoten betreffen; es sieht nur ueberlappenden Text und meldet einen Konflikt.

Wir gehen tiefer auf die Ursachen ein in warum Metadatenkonflikte entstehen und wie man sie stoppt.

Wie loesen Sie einen Metadatenkonflikt bei einem Merge Schritt fur Schritt auf?

  1. Lesen Sie die Markierungen. Oeffnen Sie die konfliktbehaftete Datei und finden Sie <<<<<<<, ======= und >>>>>>>. Alles ueber dem Trenner ist Ihr Branch; alles darunter ist der eingehende Branch.
  2. Bestimmen Sie den Metadatentyp. Fur ein Profil oder eine Permission Set arbeiten Sie auf Knotenebene: Jeder <fieldPermissions>- oder <objectPermissions>-Block ist eine Einheit, nicht die Zeilen darum herum.
  3. Behalten Sie beide unabhaengigen Aenderungen. Wenn eine Seite eine Feldberechtigung hinzugefugt und die andere ein anderes Objekt geaendert hat, behalten Sie beide Knoten. Wer zuerst gemergt hat, sollte die Zeile nicht still "gewinnen", so gehen echte Bearbeitungen verloren.
  4. Verwerfen Sie nur die echte Kollision. Wenn beide Seiten genau denselben Knoten unterschiedlich bearbeitet haben, ist das die eine menschliche Entscheidung, die das Werkzeug nicht treffen kann. Waehlen Sie den richtigen Wert bewusst.
  5. Validieren Sie das XML. Bestaetigen Sie, dass die Datei wohlgeformt ist und Knotenschluessel nicht dupliziert sind, entfernen Sie dann jede Konfliktmarkierung.
  6. Deployen und testen Sie vor dem Commit. Pushen Sie die aufgeloesten Metadaten in eine Scratch Org oder Sandbox, fuhren Sie Ihre Tests aus, und committen Sie erst dann und schliessen den Merge ab.

Fur die Disziplin, nie die Aenderung eines Teamkollegen zu verlieren, siehe wie man Konflikte aufloest, ohne jemandes Arbeit zu verlieren.

Wie hoeren Sie auf, dieselben Konflikte von Hand aufzuloesen?

Manuelle Zeile-fur-Zeile-Merges skalieren nicht. Die dauerhafte Loesung ist ein metadatenbewusster Merge, der die XML-Struktur versteht. Ein Salesforce-bewusster Git Merge Driver vergleicht Dateien Knoten fur Knoten, merged automatisch alles, was nur auf einer Seite geaendert wurde, und meldet nur die echten Kollisionen; wir gehen die Einrichtung durch in wie man einen Salesforce-bewussten Git Merge Driver einrichtet. DevOps-Plattformen treiben dieselbe Idee weiter: Gearset, Copado, Flosum und Blue Canvas bieten alle Semantic- oder Smart-Merge-Funktionen, die nicht funktionale XML-Reihenfolge ignorieren und nur echte Konflikte hervorheben. Serpent wendet dasselbe Prinzip in GitHub-nativen Pipelines an, sodass Ihr Team Entscheidungen pruft, nicht Rauschen. Gute Quellhygiene hilft ebenfalls, und das Verwalten von Salesforce-Metadaten behandelt die Gewohnheiten, die Konflikte von vornherein verhindern: kurzlebige Branches, haeufige Merges, synchron gehaltene Umgebungen und einen einzigen Eigentuemer fur geteilte Komponenten wie Profile. Durchstoebern Sie die ganze SF-Guides-Bibliothek fur mehr, und vergleichen Sie Werkzeugoptionen auf unserer Preise-Seite.

FAQ

Warum meldet Git Konflikte, wenn sich nichts wirklich geaendert hat?

Weil die Metadata API XML-Elemente in nicht deterministischer Reihenfolge zurueckgibt, sieht Git umsortierte Zeilen als Unterschiede, selbst wenn die Einstellungen identisch sind.

Kann ich einfach eine Seite des Konflikts waehlen?

Nur wenn beide Seiten genau denselben Knoten bearbeitet haben. Betreffen die Aenderungen verschiedene Knoten, loescht das Waehlen einer Seite still die echte Arbeit eines Teamkollegen.

Soll ich Profilkonflikte in der Profildatei aufloesen?

Verschieben Sie Objekt- und Feldberechtigungen nach Moeglichkeit in Permission Sets statt in Profile. Kleinere, fokussierte Dateien kollidieren weit seltener.

Brauche ich ein spezielles Werkzeug, oder reicht reines Git?

Reines Git reicht fur kleine Teams, aber ein metadatenbewusster Merge Driver oder eine DevOps-Plattform mit Semantic Merge nimmt den Grossteil der manuellen Arbeit ab, sobald mehr als ein paar Entwickler Metadaten teilen.

Ähnliche Artikel

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.