Andrew Hanna

Andrew Hanna

Salesforce-Metadatenkonflikte bei einem Merge auflösen

Salesforce-Metadatenkonflikte bei einem Merge auflösen

Um einen Salesforce-Metadatenkonflikt bei einem Merge aufzulösen, behandeln Sie die Datei als XML-Knoten statt als Zeilen: öffnen Sie die konfliktbehaftete Datei, behalten Sie die unabhängigen Änderungen 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 Versöhnung, nicht einen Sieger zu küren. So machen Sie es sauber.

Was ist ein Salesforce-Metadaten-Merge-Konflikt?

Ein Merge-Konflikt entsteht, wenn zwei Git-Branches dieselbe Datei ändern und Git nicht entscheiden kann, welche Version gewinnt, also stoppt es und gibt Ihnen die Datei mit Konfliktmarkierungen zurück. 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 für Zeile, und XML passt nicht gut in dieses Modell.

Warum treten Salesforce-Metadatenkonflikte so oft auf?

Drei Eigenschaften von Salesforce-Metadaten machen Konflikte weit häufiger als in gewöhnlichem Code:

  • Die XML-Reihenfolge ist nicht deterministisch. Die Metadata API kann dieselben Elemente zwischen Abrufen in unterschiedlicher Reihenfolge zurückgeben, sodass Git einen Unterschied meldet, wo sich nichts geändert hat.
  • Große Einzeldateien. Profile, Permission Sets und Layouts packen Hunderte unzusammenhängender Einstellungen in eine Datei, sodass zwei Personen, die verschiedene Objekte bearbeiten, dennoch auf benachbarten Zeilen kollidieren.
  • Git sieht Zeilen, keine Schlüssel. Es kann nicht erkennen, dass zwei Bearbeitungen verschiedene XML-Knoten betreffen; es sieht nur überlappenden Text und meldet einen Konflikt.

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

Wie lösen Sie einen Metadatenkonflikt bei einem Merge Schritt für Schritt auf?

  1. Lesen Sie die Markierungen. Öffnen Sie die konfliktbehaftete Datei und finden Sie <<<<<<<, ======= und >>>>>>>. Alles über dem Trenner ist Ihr Branch; alles darunter ist der eingehende Branch.
  2. Bestimmen Sie den Metadatentyp. Für 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 unabhängigen Änderungen. Wenn eine Seite eine Feldberechtigung hinzugefügt und die andere ein anderes Objekt geändert 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. Wählen Sie den richtigen Wert bewusst.
  5. Validieren Sie das XML. Bestätigen Sie, dass die Datei wohlgeformt ist und Knotenschlüssel nicht dupliziert sind, entfernen Sie dann jede Konfliktmarkierung.
  6. Deployen und testen Sie vor dem Commit. Pushen Sie die aufgelösten Metadaten in eine Scratch Org oder Sandbox, führen Sie Ihre Tests aus, und committen Sie erst dann und schließen den Merge ab.

Für die Disziplin, nie die Änderung eines Teamkollegen zu verlieren, siehe wie man Konflikte auflöst, ohne jemandes Arbeit zu verlieren.

Wie hören Sie auf, dieselben Konflikte von Hand aufzulösen?

Manuelle Zeile-für-Zeile-Merges skalieren nicht. Die dauerhafte Lösung ist ein metadatenbewusster Merge, der die XML-Struktur versteht. Ein Salesforce-bewusster Git Merge Driver vergleicht Dateien Knoten für Knoten, merged automatisch alles, was nur auf einer Seite geändert 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 prüft, nicht Rauschen. Der KI-Konfliktlöser klärt die Routinefälle und eskaliert nur, was eine menschliche Entscheidung braucht. Gute Quellhygiene hilft ebenfalls, und das Verwalten von Salesforce-Metadaten behandelt die Gewohnheiten, die Konflikte von vornherein verhindern: kurzlebige Branches, häufige Merges, synchron gehaltene Umgebungen und einen einzigen Eigentümer für geteilte Komponenten wie Profile. Durchstöbern Sie die ganze SF-Guides-Bibliothek für mehr, und vergleichen Sie Werkzeugoptionen auf unserer Preise-Seite.

FAQ

Warum meldet Git Konflikte, wenn sich nichts wirklich geändert hat?

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

Kann ich einfach eine Seite des Konflikts wählen?

Nur wenn beide Seiten genau denselben Knoten bearbeitet haben. Betreffen die Änderungen verschiedene Knoten, löscht das Wählen einer Seite still die echte Arbeit eines Teamkollegen.

Soll ich Profilkonflikte in der Profildatei auflösen?

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

Brauche ich ein spezielles Werkzeug, oder reicht reines Git?

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

Ähnliche Artikel

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.